Compiler verhalten sich anders mit einem Null-Parameter einer generischen Methode

Der folgende Code wird perfekt mit Eclipse kompiliert, kann jedoch nicht mit javac kompiliert werden:

public class HowBizarre {
      public static <P extends Number, T extends P> void doIt(P value) {
      }

      public static void main(String[] args) {
            doIt(null);
      }
}

Ich habe den Code vereinfacht, daher wird T jetzt überhaupt nicht verwendet. Trotzdem sehe ich keinen Grund für den Fehler. Aus irgendeinem Grund entscheidet javac, dass T für Object steht, und beschwert sich dann, dass Object nicht den Grenzen von T entspricht (was wahr ist):

HowBizarre.java: 6: inkompatible Typen; abgeleitete Typargumente java.lang.Number, java.lang.Object entsprechen nicht den Grenzen der Typvariablen P, T

found:<P,T>Leer

erforderlich: void

       doIt(null);
           ^

Beachten Sie, dass die Kompilierung problemlos funktioniert, wenn ich den Null-Parameter durch einen Nicht-Null-Wert ersetze.

Welche Compiler verhalten sich richtig und warum? Ist das ein Fehler von einem von ihnen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage