Существует ли стандартный статический метод Java, «равный или нулевой»?

101

Есть ли стандартная версия следующего метода, чтобы сэкономить время на вводе и прояснить мой код?

public static boolean bothNullOrEqual(Object x, Object y) {
  return ( x == null ? y == null : x.equals(y) );
}
Крис Конвей
источник
Может кто подскажет, где такая штука пригодится?
anjanb
2
Это просто позволяет вам пропустить нулевые проверки в вашем методе equals ().
Майкл Майерс
1
Если вы реализуете коллекцию, ваш метод .contains () при задании «o» должен проверить, «содержит ли эта коллекция хотя бы один элемент e, такой что (o == null? E == null: o.equals (e )) ". Точно так же ваш метод .remove () должен удалить такой элемент.
newacct 09
6
Всего два цента. Я бы использовал: public static boolean bothNullOrEqual (Object x, Object y) {return (x == y || (x! = Null && x.equals (y))); } ИМХО, для начинающих программистов так удобнее.
m_vitaly 05
1
Другой вариант использования: сравните значение, чтобы увидеть, изменилось ли оно по сравнению с предыдущим значением во время грязной проверки.
Neromancer

Ответы:

193

В Java 7 теперь вы можете напрямую выполнять нулевое безопасное равенство:

Objects.equals (x, y)

(Библиотека Jakarta Commons ObjectUtils.equals () устарела с Java 7)

Kdeveloper
источник
Этот метод также реализован в Googles Dependency injection-libray Guice.
Niels
1
Spring также реализует аналогичный метод: nullSafeEquals в классе
ObjectUtils
2
В Google Guava также есть Objects.equals ().
Spina
Это только нулевое значение для x. Для y это зависит от реализации equals данного объекта. (реализация return (x == y) || (x != null && x.equals(y));)
emi-le
23

если по какой-то причине у вас есть доступ к библиотеке Jakarta Commons, есть ObjectUtils.equals () и множество других полезных функций.

РЕДАКТИРОВАТЬ: изначально неправильно прочитал вопрос

Мэтт
источник