Dies ist eine alte Version des Dokuments!
Generische Klassen
Stellen Sie sich eine Klasse Liste
vor, die beliebige Objekte speichern kann und beispielsweise Methoden add
(hinten hinzufügen) und getFirst
(erstes Element zürückliefern) besitzt:
class Liste { void add(Object element){ ... } Object getFirst(){ ... } }
Die Klasse Object
ist Oberklasse aller Klassen in Java. Damit die Liste beliebige Objekte speichern kann, muss der Parameter von add
vom Typ Object
sein, ebenso der Rückgabe-Datentyp von getFirst
.
Das ist aber ungünstig: Stellen Sie sich vor, Sie instanzieren eine Liste zum Speichern von Kunde
-Objekten:
Liste kundenliste = new Liste();
Sie würden sich wünschen, dass kundenliste.add
nur Objekte der Klasse Kunde
akzeptiert, damit Ihnen beim Programmieren kein Fehler unterlaufen kann. Außerdem möchten Sie beispielsweise schreiben können
Kunde k = kundenliste.getFirst();
Der Compiler meldet in diesem Fall aber einen Fehler, da er nicht weiß, dass in die kundenliste
nur Objekte der Klasse Kunde
gesteckt werden und kundenliste.getFirst()
somit auch nur solche zurückliefern wird.
Wir brauchen eine Möglichkeit, den Compiler beim Instanzieren der Liste darüber zu informieren, dass darin später nur Objekte der Klasse Kunde
(und natürlich von Unterklassen davon) gespeichert werden sollen.