Будет ли какая-то причина / обстоятельство, по которым я должен использовать 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)последовательно…