Сравнение Objects.isNull() и object == null в Java: когда что использовать
Быстрый ответ
Если вам необходимо проверить объект на равенство null, можно обратиться к давно знакомому и простому сравнению ‒ object == null
. Тем, кто стремится к более изящному и практичному решению, следует воспользоваться Objects.isNull(object)
. Наиболее эффективно одтакой метод будет работать с такими элементами Java, как потоки (streams) и ссылки на методы (method references):
boolean isNull = Objects.isNull(someObject); // Разнообразие ваших возможностей!
Независимо от того, придерживаетесь вы простоты object == null
или выполняете проверку в стиле функционального программирования с помощью Objects.isNull
, основная ваших цель – повышение читаемости и лаконичности кода.
Сравнение объектов: классический метод
Стандартный подход к проверке объекта на равенство null, представленный как object == null
, хорошо знаком всем Java-разработчикам. Он прост и легко читаем:
if (object == null) {
// Обработка отсутствия объекта
}
Однако в некоторых кодовых базах предпочитают Objects::isNull
за его изящество, особенно при работе с опциональными значениями или когда разработчикам свойственен функциональный стиль написания кода в Java:
Optional.ofNullable(object).filter(Objects::isNull).ifPresent(o -> {
// Действия в случае, если значение равно null
});
Не забывайте, что единообразие в написании кода способствует его легкой поддержке и гарантирует отслеживаемость.
Проверка на null в потоках: функциональная эстетика
Немногие разработчики знают, что Objects::isNull
может быть весьма полезен при работе с потоками. Пусть у вас есть список, в котором могут прятаться null-значения:
List<String> items = Arrays.asList("a", null, "c");
List<String> nonNullItems = items.stream()
.filter(Objects::nonNull)
.collect(Collectors.toList());
// Вычищаем список от null-значений!
Здесь мы легко избавляемся от null'ов, используя метод Objects::isNull
, и улучшаем качество нашего списка благодаря лаконичности и функциональному подходу.
Предотвращение случайных присваиваний
Использование метода Objects.isNull()
поможет исключить вероятность случайного присваивания, как, например, if (object = null)
, которое может остаться незамеченным компилятором и привести к логическим ошибкам. Применяя Objects.isNull()
, вы страхуете себя от таких недоразумений:
if (Objects.isNull(object)) {
// Потенциальные проблемы избегнуты.
}
Без снижения производительности
Многие могут спросить: не ухудшит ли Objects.isNull()
производительность? Не беспокойтесь, разница между этим методом и object == null
незначительна и отсутствует влияние на производительность.
Залицем за реализацию Objects.isNull
Изучив содержимое метода Objects.isNull()
, вы обнаружите лишь простую проверку на равенство null:
public static boolean isNull(Object obj) {
return obj == null;
// Смысл метода не отличается от классического подхода!
}
Только проследив за основой Objects.isNull()
, можно увидеть, что главное в выборе между 'object == null' и 'Objects.isNull()' ‒ не набор технических приемов, а чистота и соответствие стилю кодирования. Эти качества действительно важны!