Geben Sie einen Parameter mit mehreren Schranken ein

8

Dieser Code wird kompiliert:

%Vor%

aber wenn ich die letzte Zeile durch

ersetze %Vor%

Ich bekomme "Schnittstelle erwartet hier". Warum?

    
Gmacar 02.04.2012, 11:37
quelle

2 Antworten

13

Von Abschnitt 4.4 der JLS :

  

Jede Typvariable, die als Typparameter deklariert ist, hat eine Grenze. Wenn für eine Typvariable keine Bindung deklariert ist, wird Object angenommen. Wenn eine Grenze deklariert ist, besteht sie entweder aus:

     
  • eine einzelne Typvariable T oder

  •   
  • eine Klasse oder ein Schnittstellentyp T, möglicherweise gefolgt von den Schnittstellentypen I1 & amp; ... & amp; In.

  •   

Es ist ein Fehler bei der Kompilierung, wenn einer der Typen I1 ... In eine Klassentyp- oder Typvariable ist.

Wenn Ihre Schranken also eine Klasse enthalten, muss sie im Prinzip die erste -Grenze sein.

(Da Arrays nicht instanziiert werden kann, ist es unklar, warum Sie eine Bindung wünschen , die es enthält, wohlgemerkt ... war das nur ein Beispiel?)

    
Jon Skeet 02.04.2012, 11:38
quelle
0

Wenn eine der Grenzen eine Klasse ist, muss sie zuerst angegeben werden.

    
Andrey 08.05.2015 20:59
quelle

Tags und Links