Мне нравится использовать этот метод здесь:
org.apache.commons.lang.ObjectUtils.equals(Object object1, Object object2)
Единственный недостаток (по сравнению, например, с Google Guava) в том, что я не могу статический импорт метода. Т.е. это бесполезно:
import static org.apache.commons.lang.ObjectUtils.equals;
... поскольку мой компилятор Eclipse не будет правильно связывать этот метод при записи
equals(obj1, obj2);
Ошибка:
Метод equals (Object) в типе Object неприменим для аргументов (. .., ...)
Почему? Мой статически импортированный метод неприменим, если в любом из супертипов есть метод с таким же именем (но не с одинаковой подписью)? Это официально указано в JLS? Или какая-то проблема с компилятором Eclipse?
ОБНОВЛЕНИЕ
Это тоже не работает:
import static org.apache.commons.lang.ObjectUtils.defaultIfNull;
public class Test {
void test() {
defaultIfNull(null, null);
// ^^ compilation error here
}
void defaultIfNull() {
}
}
сообщение об ошибке javac:
Test.java:5: defaultIfNull() in Test cannot be applied to (<nulltype>,<nulltype>)
defaultIfNull(null, null);
^
1 error