Существует ли стандартный статический метод 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)


Этот метод также реализован в 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 () и множество других полезных функций.

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.