Úselo Objects.requireNonNull(Object)
para eso.
Comprueba que la referencia de objeto especificada no es nula. Este método está diseñado principalmente para hacer validación de parámetros en métodos y constructores, [...]
En su caso esto sería:
public void useObject(CustomObject customObject) {
object = customObject.getObject();
Objects.requireNonNull(object);
// Do stuff using object, which would throw a NPE if object is null.
}
Esta función se realiza para los fines que mencionó, es decir, marque explícitamente lo que no debe ser nulo; También en producción. El gran beneficio es que se asegura de encontrar valores nulos justo donde no deberían aparecer en primer lugar. Tendrá menos problemas para depurar los problemas causados por valores nulos que se pasaron a un lugar donde no deberían estar.
Otro beneficio es la flexibilidad adicional con respecto a los cheques nulos en contraste con assert
. Si bien assert
es una palabra clave para verificar un valor booleano, Objects.requireNonNull(Object)
es una función y, por lo tanto, puede integrarse en un código mucho más flexible y legible. P.ej:
Foo foo = Objects.requireNonNull(service.fetchFoo());
// You cannot write it in on line.
Bar bar = service.fetchBar();
assert bar != null;
service.foo(Objects.requireNonNull(service.getBar()));
// You cannot write it in on line.
Bar bar = service.getBar();
assert bar != null;
service.foo(bar);
Tenga en cuenta que Objects.requireNonNull(Object)
es exclusivamente para la verificación nula donde assert
se generaliza. assert
tiene propósitos ligeramente diferentes a ese respecto, es decir, principalmente pruebas. Tiene que estar habilitado, para que pueda habilitarlo para las pruebas y deshabilitarlo para la producción. De todos modos, no lo use para el código de producción. Podría ralentizar la aplicación con validaciones innecesarias y complicadas destinadas a pruebas. Úselo para separar las comprobaciones de solo pruebas de las comprobaciones destinadas a la producción también.
Consulte la documentación oficial para obtener más información assert
.
-ea
o equivalente.