Чи існують які-небудь причини / обставини, з яких я повинен використовувати object == null над Objects.isNull () в операторі if ?
Так, одна з причин - простота коду. У разі затвердження object == null
ясно і добре відомі. Це не може призвести до будь-якої неналежної поведінки, якщо, наприклад, існує помилка.
Я розумію, що Objects.isNull () усуне ймовірність випадкового присвоєння об'єкту нульового значення, опустивши друге =.
Якщо є параметр if (object = null) {}
з пропущеним, =
він не компілюється, або генерує попередження у випадку Boolean
об'єкта! Насправді немає жодної причини для використання Objects.isNull(object)
над 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)
послідовно ...