Generisches Objekt Typ-Parameter Problem

heritchan

Grünschnabel
Guten Tag Zusammen

Ich habe eine kleine Frage bezüglich Generische Objekte.

Ich möchte eine Klasse Mitarbeiterliste erzeugen, welche von der Klasse ArrayList erbt.
In dieser Klasse Mitarbeiterliste sollten nur Objekte vom Typ Mitarbeiter gespeichert werden dürfen.

Meine Klassen Deklaration sieht nun wie folgt aus:
public class Mitarbeiterliste<T extends Mitarbeiter> extends ArrayList<Mitarbeiter> {

T ist hier bei ein Typ-Parameter.

Irgendwie verstehe ich leider das Wort Typ-Parameter nicht genau.
Denn anstelle von T kann ich hier irgend etwas hinschreiben ohne eine Fehlermeldung
zu bekommen.

Kann mir das jemand erklären für was dieser Typ-Parameter genau ist?

Viele Dank
 
T ist die Benamung des Typs. Die Typen haben Namen da man auch mehrere Typen angeben kann. Bei einer HashMap gibt es ja z.B. einen Typ für den Schlüssel und einen für den Wert, also:
Java:
public class HashMap<K,V> {}

Wenn du eine HashMap instanziierst so tut man dies z.B. so:
Java:
HashMap<String,Integer> map = new HashMap<String,Integer>();
Dies bedeutet dass K in der HashMap für den Typ String steht und V für den Typ Integer.

Würde innerhalb der HashMap also eine Methode:
Java:
public List<V> getReversedValueList(){
    List<V> reversedList = new ArrayList<V>(this.values());
    Collections.reverse(reversedList);
    return reversedList;
}
stehen, so steht V wiederum für den Typ der Werte der HashMap. In unserem Beispiel würden wir also eine Liste von Integer zurückbekommen (List<Integer>).

In deinem Fall wäre es übrigens sinnvoll deinen Typ an die ArrayList weiterzugeben:
Java:
public class Mitarbeiterliste<MitarbeiterTyp extends Mitarbeiter> extends ArrayList<MitarbeiterTyp>
 

Neue Beiträge

Zurück