Почему я не могу «статически импортировать» метод «равно» в Java?

Мне нравится использовать этот метод здесь:

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
29
задан Lukas Eder 25 October 2011 в 15:40
поделиться