2. Type in Collection?

... komplette Frage anzeigen

3 Antworten

Das sagt dir, dass es sich um einen Vektor aus Integers handelt.

Integer ist das Wrapper Objekt für int.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Albert30103
20.04.2016, 13:59

Entschuldiegung, die Frage ist so
Vector <Integer>v = new Vector<Integer>(); Was ist zweite Integer?

0

Vor dem Gleichheitszeichen steht die Variable (samt Typ, da Deklaration), nach dem Gleichheitszeichen der Wert, mit dem sie initialisiert wird. Der Wert erfordert in diesem Fall eine Instantiation, daher auch die Angabe des (vollständigen) Typs.

D.h. es muss links und rechts des Gleichheitszeichens ja nicht zwingend der exakt selbe Typ stehen (der Typ des zugewiesene Werts muss lediglich zuweisungskompatibel sein, kann also auch in der Ableitungshierarchie weiter unten stehen).

Du könntest also links auch Vector<? extends Object> oder Vector<?> oder einfach nur Vector schreiben. Und hättest somit eine "schwächere" Typzusicherung.

Mittlerweile (Java 7) kannst du auch rechts einfach new Vector<>() schreiben, dann wird automatisch der Typ von links eingefüllt . Syntaktischer Zucker. ;-)

Antwort bewerten Vielen Dank für Deine Bewertung

Polymorphie. Du kannst ein generisches Objekt mit einer Subklasse des deklarierten Typs als Typenparameter initialisieren. Beispiel:

Vector<? extends Animal> animals;

//...

animals = new Vector<Dog>();

//...

animals = new Vector<Cat>();


Beides zulässig.

Wenn Du bei der Initialisierung den gleichen Typ wie bei der Deklaration verwenden willst, kannst Du die Klammern auch leer lassen. Wird "Diamond operator" genannt und gibt's seit Java 7.

Beachte, dass das generische Objekt, unabhängig von der Initialisierung, immer den Typenparameter der Deklaration besitzt. Daher musst Du bei Methoden wie "get(int)" vor dem casten immer explizit den Typ prüfen.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?