2010-03-27 7 views

Antwort

11

Ich glaube nicht - so weit ich aus der Sprachspezifikation sagen kann, "Super" ist nur für Wildcard-Typen in erster Linie gültig. Die Syntax für Platzhalter schlägt auch können Sie nur eine Wildcard haben auch gebunden - so können Sie etwas nicht verwenden, wie dies entweder:

// Invalid 
void foo(List<? extends Foo super Bar> list) 

Auch wenn diese beiden sind in Ordnung:

// Valid 
void foo(List<? extends Foo> list) 

// Valid 
void foo(List<? super Bar> list) 

Wie in Kommentaren notiert, ist es möglich, mehrere oberen Grenzen - aber nur für Typparameter und Cast-Ausdrücke. Zum Beispiel:

// Valid 
<T extends Number & Comparable> void foo(List<T> list) 
+1

Danke für Ihre Antwort. Darf ich vorschlagen, dass Sie einen Kommentar hinzufügen, der besagt, dass der Code nicht gültig ist, sodass niemand (falsch) denkt, dass er gültig ist? (z. B. wenn es auf einer Suchergebnisseite erscheint) –

+0

@Hosam: Will do. –

+0

Um klar zu sein, Sie * können * mehrere obere Schranken haben, zB 'List '. – NateS

5

Von Oracle's tutorial:

Hinweis: Sie können eine Obergrenze für einen Platzhalter angeben, oder Sie können eine untere Grenze angeben, aber Sie können nicht beide angeben.

Verwandte Themen