Ist dies eine Einschränkung bei Generics in Java?

7

Ich möchte die folgende Klasse als solche definieren:

%Vor%

Dies wird nicht kompiliert ( cannot resolve symbol T ). Wenn ich die Klassendeklaration durch Folgendes ersetze:

%Vor%

Dann kann ich den parametrisierten Typ der Sammlung nicht referenzieren.

Fehle ich etwas oder habe ich eine Grenze mit Generika in Java erreicht?

    
Two Shoes 10.06.2010, 17:05
quelle

2 Antworten

13

Sie müssen einen zweiten generischen Parameter für T hinzufügen:

%Vor%

Wie Nathan darauf hingewiesen hat, kannst du auch nicht value.add(T) schreiben.

    
SLaks 10.06.2010 17:08
quelle
7

Es gibt zwei Probleme mit Ihrer Beispielklasse. Das erste ist, dass Sie erklären müssen, was T bedeutet, was bedeutet, dass es in den Generics für die Klasse enthalten sein muss oder ein echter Klassentyp sein muss. In diesem Fall möchten Sie wahrscheinlich

%Vor%

Das zweite Problem, das Sie wahrscheinlich gefunden hätten, wenn Sie den Compiler nach dem ersten erhalten hätten, ist, dass der Körper Ihrer addValue-Methode versucht, den Typ T zur Sammlung hinzuzufügen, anstatt diesen Wert:

%Vor%     
roguenet 10.06.2010 17:11
quelle

Tags und Links