Следующий код отлично компилируется с Eclipse, но не компилируется с помощью javac:
public class HowBizarre {
      public static <P extends Number, T extends P> void doIt(P value) {
      }
      public static void main(String[] args) {
            doIt(null);
      }
}
Я упростил код, поэтому T теперь не используется вообще. Тем не менее, я не вижу причины для ошибки. По какой-то причине javac решает, что T обозначает Object, а затем жалуется, что Object не соответствует границам T (что истинно):
HowBizarre.java:6: несовместимые типы; аргумент (-ы) вывода java.lang.Number, java.lang.Object не соответствуют ограничениям типа переменная P, T
найдено:
<P,T>voidтребуется: void
doIt(null); ^
Обратите внимание, что если я заменил нулевой параметр на ненулевое значение, он компилируется отлично.
Какой из компиляторов ведет себя правильно и почему? Это ошибка одного из них?
