List<List<String>> myList = new Vector<Vector<String>>();
Da meckert aber der Compiler. Folgendes funktioniert:
List<Vector<String>> mylist = new Vector<Vector<String>>();
Jetzt frage ich mich, warum ersteres nicht geht.
Weil die Signaturen verschieden sind (iirc, nannte man dieses Typgedöhns Signaturen, oder waren das die Definitionen von Funktionen?)
List<List<String>>
würde bedeuten, dass man jegliche Instanzen dessen Klassen vom Typ List erben und String "verwenden" akzeptieren würde (Du könntest zB. ArrayList<String>
- und Vector<String>
-Instanzen reinstopfen). Durch Vector<Vector<String>> geht das aber nicht mehr, da ArrayList<String> halt kein Vector<String> ist.
Trotzdem ist das was du willst möglich:
List<? extends List<String>> myList = new Vector<Vector<String>>();
Trotzdem bleibt new Vector<List<String>>()
sinnvoller, da man nicht extra aufpassen muss was nun wirklich instanziert wurde.
MfG
bubble
If "god" had intended us to drink beer, he would have given us stomachs. - David Daye