Java-эквивалент .NET object.Equals (объект, объект) - PullRequest
3 голосов
/ 06 апреля 2011

В .NET System.Object определяет статический метод

bool Equals(object a, object b);

Это полезная альтернатива a.Equals(b) в случаях, когда a может быть null. Он также возвращает истину, если a и b равны null.

Я не могу найти эквивалентный метод в среде Java (моя Java немного устарела в наши дни.) Самый краткий код, который я могу найти:

(a==null && b==null) || (a!=null && a.Equals(b))

Существует ли такой метод?

ПРИМЕЧАНИЕ Я не хочу брать зависимость от какой-либо внешней структуры. Мне просто любопытно, существует ли этот простой метод в базовой библиотеке классов Java.

Ответы [ 3 ]

4 голосов
/ 06 апреля 2011

Я думаю, что вы хотите ObjectUtils.equals .

 ObjectUtils.equals(null, null)                  = true
 ObjectUtils.equals(null, "")                    = false
 ObjectUtils.equals("", null)                    = false
 ObjectUtils.equals("", "")                      = true
 ObjectUtils.equals(Boolean.TRUE, null)          = false
 ObjectUtils.equals(Boolean.TRUE, "true")        = false
 ObjectUtils.equals(Boolean.TRUE, Boolean.TRUE)  = true
 ObjectUtils.equals(Boolean.TRUE, Boolean.FALSE) = false

Если вам интересно, вот код из библиотеки ...

public static boolean equals(Object object1, Object object2) {
    if (object1 == object2) {
        return true;
    }
    if ((object1 == null) || (object2 == null)) {
        return false;
    }
    return object1.equals(object2);
}
2 голосов
/ 06 апреля 2011

В настоящее время его нет в базовой библиотеке, но это одно из улучшений, которое добавляется в Java 1.7.

В Java 1.7 вы можете использовать Objects.equals(Object a, Object b).До тех пор я рекомендую реализовать его самостоятельно, если вы не хотите добавлять внешние зависимости.

source

1 голос
/ 06 апреля 2011

ObjectUtils в Apache Common s предоставляет такой метод .

...