Будет ли какая-то причина / обстоятельство, по которым я должен использовать object == null вместо Objects.isNull () в инструкции if ?
Да, одна из причин - сделать код простым. Внутри if заявление object == null
ясно и хорошо известно. Это не может привести к неправильному поведению, если, например, есть опечатка.
Насколько я понимаю, Objects.isNull () устранит вероятность случайного присвоения объекту нулевого значения, пропустив второй =.
Если параметр if (object = null) {}
with пропущен, =
он не будет компилироваться или выдаст предупреждение в случае Boolean
объекта! На самом деле нет причин использовать Objects.isNull(object)
over object == null
внутри оператора if . Вот два варианта бок о бок:
if (object == null) {
}
if (Objects.isNull(object)) {
}
Должен ли Objects.isNull () ограничиваться исключительно предикатами?
Можно сказать, что да, он ограничен исключительно предикатами, хотя нет никаких технических препятствий для использования Objects.isNull()
везде.
Из public static boolean isNull(Object obj)
javadoc метода:
@apiNoteЭтот метод существует для использования в качестве java.util.function.Predicate, filter (Objects :: isNull)
Таким образом, если вы используете метод не как предикат, вы фактически используете более сложное и громоздкое выражение по сравнению с простым object == null
.
Вот отрывок для сравнения преимуществ 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)
последовательно…