¿Habría alguna razón / circunstancia por la que debería usar object == null sobre Objects.isNull () en una declaración if ?
Sí, una razón es mantener el código simple. Dentro de si la declaración object == null
es clara y bien conocida. No puede dar lugar a ningún mal comportamiento si, por ejemplo, hay un error tipográfico.
Tengo entendido que Objects.isNull () eliminaría la posibilidad de asignar accidentalmente un valor nulo al objeto omitiendo el segundo =.
Si se omite un if (object = null) {}
con , no se compilará o generará una advertencia en caso de objeto. En realidad, no hay razón para usar over dentro de la declaración if . Aquí están las dos variantes una al lado de la otra: =
Boolean
Objects.isNull(object)
object == null
if (object == null) {
}
if (Objects.isNull(object)) {
}
¿Debería Objects.isNull () limitarse exclusivamente a predicados?
Se podría decir que sí, se limita exclusivamente a Predicados, aunque no hay ningún obstáculo técnico para utilizarlo en Objects.isNull()
todas partes.
Desde el public static boolean isNull(Object obj)
javadoc del método:
@apiNote Este método existe para ser utilizado como java.util.function.Predicate, filter (Objects :: isNull)
Entonces, si usa el método como no un predicado, en realidad está usando una expresión más compleja y engorrosa en comparación con la simple object == null
.
Aquí hay un fragmento para comparar el beneficio de Objects.isNull(object)
List<String> list = Arrays.asList("a", "b", null, "c", null);
long countNullsWithPredicate = list.stream().filter(Objects::isNull).count();
long countNullsWithLambda = list.stream().filter(object -> object == null).count();
long countNullsWithAnonymous = list.stream().filter(new Predicate<Object>() {
@Override
public boolean test(Object obj) {
return obj == null;
}
}).count();
if(null == variable)
consistente ...