Container generischer Typen in Java

8

Ich habe eine generische Klasse Foo<T> und parametrisierte Typen Foo<String> und Foo<Integer> . Jetzt möchte ich verschiedene parametrisierte Typen in ein einziges ArrayList setzen. Was ist der richtige Weg, dies zu tun?

Kandidat 1:

%Vor%

Kandidat 2:

%Vor%

In einem Wort, es hängt mit dem Unterschied zwischen Foo<?> und dem rohen Typ Foo zusammen.

Aktualisierung:

Grep Was ist der Unterschied zwischen dem parametrisierten Typ mit unbeschränkter Wildcard und dem unformatierten Typ? auf Dieser Link kann hilfreich sein.

    
Cyker 30.06.2013, 16:05
quelle

2 Antworten

8

List repräsentiert eine Liste ohne Typparameter. Es ist eine Liste, deren Elemente von irgendeinem Typ sind, z. Die Elemente können unterschiedlicher Art sein. Es ist im Grunde das gleiche wie List<Object> .

In der Zwischenzeit repräsentiert List<?> eine Liste mit einem unbeschränkten Typparameter. Seine Elemente sind von einem bestimmten, aber unbekannten Typ (vor der Laufzeit). Diese Elemente müssen alle zur Runtime vom selben Typ sein.

Ich empfehle die Verwendung von Rohtypen. Die richtige Lösung für Ihr Beispiel ist List<Foo<?>> .

    
Konstantin Yovkov 30.06.2013, 16:10
quelle
4

Sie möchten Rohtypen nach Möglichkeit vermeiden. Der richtige Weg dazu wäre mit
List<Foo<?>> .

    
Jeffrey 30.06.2013 16:10
quelle

Tags und Links