Haveria alguma razão / circunstância para que eu devesse usar object == null sobre Objects.isNull () em uma instrução if ?
Sim, um dos motivos é manter o código simples. Dentro de if, a declaração object == null
é clara e bem conhecida. Isso não pode levar a qualquer mau comportamento se, por exemplo, houver um erro de digitação.
Meu entendimento é que Objects.isNull () removeria a chance de atribuir acidentalmente um valor nulo ao objeto omitindo o segundo =.
Se houver um if (object = null) {}
com omitido =
não irá compilar ou irá gerar um aviso no caso do Boolean
objeto! Na verdade não há razão para usar Objects.isNull(object)
ao longo object == null
dentro de if . Aqui estão as duas variantes lado a lado:
if (object == null) {
}
if (Objects.isNull(object)) {
}
Deve Objects.isNull () ser confinado exclusivamente a Predicados?
Pode-se dizer que sim, está confinado exclusivamente a Predicados, embora não haja nenhum obstáculo técnico para usá-lo em Objects.isNull()
todos os lugares.
Do public static boolean isNull(Object obj)
javadoc do método:
@apiNoteEste método existe para ser usado como java.util.function.Predicate, filtro (Objects :: isNull)
Portanto, se você usar o método como não um predicado, estará, na verdade, usando uma expressão mais complexa e incômoda do que a simples object == null
.
Aqui está um snippet para comparar o benefício 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 ...