„Ein weiteres cooles Thema.“
„Es gibt immer wieder Überraschungen! Habe ich Geburtstag?“
„Heute werde ich dir von Generics erzählen. Generics sind Typen, die einen Parameter haben. In Java kannst du mit Hilfe von Containerklassen den Typ ihrer inneren Objekte angeben.“
„Wenn wir eine generische Variable deklarieren, geben wir zwei Typen anstelle von einem an: den Variablentyp und den Typ der Daten, die er speichert.“
„ArrayList ist ein gutes Beispiel. Wenn wir ein neues ArrayList-Objekt erstellen, ist es praktisch, den Typ der Werte anzugeben, die in dieser Liste gespeichert werden.“
Code | Erläuterung |
---|---|
|
Erstelle eine ArrayList-Variable namens list .Weise ihr ein ArrayList-Objekt zu. Diese Liste kann nur String-Objekte speichern. |
|
Erstelle eine ArrayList-Variable namens list .Weise ihr ein ArrayList-Objekt zu. Diese Liste kann beliebige Werte speichern. |
|
Erstelle eine ArrayList-Variable namens list .Weise ihr ein ArrayList-Objekt zu. Diese Liste kann nur Integer - und int -Werte speichern. |
„Klingt total interessant. Vor allem der Teil über das Speichern von beliebigen Typen.“
„Es sieht nur so aus, als wäre das eine gute Sache. In Wirklichkeit ist es so: Wenn wir Zeichenketten in EINER Methode in eine ArrayList einfügen und dann in einer ANDEREN Methode erwarten, dass sie Zahlen enthält, wird das Programm abstürzen (mit einem Fehler enden).“
„Ach so.“
„Im Moment werden wir keine eigenen Klassen mit Typparametern erstellen. Wir verwenden einfach die vorhandenen.“
„Kann jede Klasse ein Typparameter sein, sogar eine, die ich selbst schreibe?“
„Ja. Jeder Typ außer primitiven Typen. Alle Typparameter müssen von der Object-Klasse erben.“
„Du meinst, ich kann nicht ArrayList<int>? schreiben?“
„Genau, das kannst du nicht. Aber Java-Entwickler haben Wrapper-Klassen für jeden der primitiven Typen geschrieben. Diese Klassen erben von Object. Das sieht dann so aus:“
Primitiver Typ | Klasse | Liste |
---|---|---|
int | Integer | ArrayList<Integer> |
double | Double | ArrayList<Double> |
boolean | Boolean | ArrayList<Boolean> |
char | Character | ArrayList<Character> |
byte | Byte | ArrayList<Byte> |
„Du kannst primitive Klassen und ihre entsprechenden Wrapper-Klassen einfach einander zuordnen:“
Beispiele |
---|
|
|
|
|
|
„Prima. Ich glaube, ich werde versuchen, ArrayList öfter zu benutzen.“
GO TO FULL VERSION