Мне нравится использовать этот метод здесь:
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?
UPDATE
Это также не работает:
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