2013-06-21 1 views
6

Есть ли где-нибудь в стандартных библиотеках Java, у которых есть функция статического равенства, что-то вроде этого?Имеет ли Java общий тест на равенство, который также обрабатывает значения NULL?

public static <T> boolean equals(T a, T b) 
{ 
    if (a == null) 
     return b == null; 
    else if (b == null) 
     return false; 
    else 
     return a.equals(b); 
} 

Я просто реализовать это в новом классе проект Util, в сотый раз. Кажется невероятным, что он не будет поставляться в качестве стандартной библиотечной функции ...

+1

В родном языке Java не существует (AFAIK). Это описано в библиотеках, таких как [Apache Commons] (http://commons.apache.org/). –

+0

@LuiggiMendoza от 7 до – fge

+0

@VicSchappert Мы можем ответить на вопрос к вашему удовлетворению? Или вам не хватает некоторых вещей? Если нет, вы должны принять один из ответов ниже – martido

ответ

13

В JDK 7 есть Objects#equals(). Из Javadoc:

Возвращает true, если аргументы равны друг другу, а false в противном случае. Следовательно, если оба аргумента равны нулю, возвращается true , и если только один аргумент равен null, возвращается false. В противном случае равенство определяется с помощью метода equals первого аргумента .

В дополнение к уже упомянутой функции в Apache Commons Lang есть также один в Google гуавы, Objects#equal():

+0

С http:// /stackoverflow.com/help/editing «Если вам не нравится идея того, что ваши вклады будут совместно отредактированы другими доверенными пользователями, это может быть не для вас». –

+0

@SteveKuo Что значит? Я не знаю, что я сделал что-то неправильно ... – martido

+0

Я имел в виду, что вы уничтожили мои правки. Возможно, есть ошибка в stackoverflow, где вы явно не отменили его. –