Platzhalter mit abschließender Obergrenze

8

Class<? extends Integer> wird gut kompiliert, aber Integer ist ein letzter Typ, daher ist es nicht sinnvoll, ihn als obere Grenze zu verwenden (nichts wird jemals extend it).

Wenn Sie versuchen, einen letzten Typ als obere Grenze für einen Typparameter zu verwenden, erhalten Sie eine Compiler-Warnung:

  

Der Typparameter T sollte nicht durch den letzten Typ Integer begrenzt sein.   Abschließende Typen können nicht weiter erweitert werden

Warum wäre die Verwendung eines letzten Typs als obere Grenze für einen Platzhalter völlig in Ordnung, aber wirf eine Warnung für einen Typparameter aus? Warum erlaubt Java sogar, dass Platzhalter durch einen abschließenden oberen Typ begrenzt werden?

    
Jeffrey 11.08.2012, 21:17
quelle

1 Antwort

5

Class<Integer> ist nicht so permissiv für die Zuweisung wie Class<? extends Integer> .

Zum Beispiel kompiliert dies:

%Vor%

Das tut nicht:

%Vor%

Ich selbst konnte keine Compilerwarnung erhalten (vielleicht könnten Sie ein Beispiel und Details zu Ihrem Compiler geben?).

    
Mark Peters 11.08.2012, 21:47
quelle

Tags und Links