"Endnu et fedt emne."

"Overraskelserne bliver bare ved med at komme! Er det min fødselsdag?"

"I dag vil jeg fortælle dig om generika. Generiske er typer, der har en parameter. I Java lader containerklasser dig angive typen af ​​deres indre objekter."

"Når vi erklærer en generisk variabel, angiver vi to typer i stedet for én: variabeltypen og typen af ​​de data, den gemmer."

"ArrayList er et godt eksempel. Når vi opretter et nyt ArrayList-objekt, er det praktisk at angive typen af ​​værdier, der vil blive gemt i denne liste."

Kode Forklaring
ArrayList<String> list = new ArrayList<String>();
Opret en ArrayList-variabel kaldet list.
Tildel et ArrayList-objekt til det.
Denne liste kan kun gemme String- objekter.
ArrayList list = new ArrayList();
Opret en ArrayList-variabel kaldet list.
Tildel et ArrayList-objekt til det. Denne liste kan gemme alle værdier .
ArrayList<Integer> list = new ArrayList<Integer>();
Opret en ArrayList-variabel kaldet list.
Tildel et ArrayList-objekt til det.
Denne liste kan kun gemme Integerog intværdier.

"Lyder super interessant. Især delen om lagring af værdier af enhver type ."

"Det ser kun ud til, at det er en god ting. I virkeligheden, hvis vi sætter strenge ind i en ArrayList i én metode og derefter forventer, at den indeholder tal i en anden metode, vil programmet gå ned (slutte med en fejl)."

"Jeg ser."

"I øjeblikket vil vi ikke oprette vores egne klasser med typeparametre. Vi vil bare bruge de eksisterende."

"Kan enhver klasse være en typeparameter, også en som jeg skriver?"

"Ja. Enhver type undtagen primitive typer. Alle typeparametre skal arve fra klassen Object."

" Du mener, at jeg ikke kan skrive ArrayList<int>? "

"Det kan du faktisk ikke. Men Java-udviklere har skrevet wrapper-klasser for hver af de primitive typer. Disse klasser arver Object . Sådan ser det ud:"

Primitiv type Klasse Liste
int Heltal ArrayList< Heltal >
dobbelt Dobbelt ArrayList< Dobbelt >
boolesk Boolean ArrayList< Boolean >
char Karakter ArrayList< Tegn >
byte Byte ArrayList< Byte >

"Du kan nemt tildele primitive klasser og deres analoger (indpakningsklasser) til hinanden:"

Eksempler
int a = 5;
Integer b = a;
int c = b;
Character c = 'c';  //the literal c is a char
char d = c;
Byte b = (byte) 77;  // The literal 77 is an int
Boolean isOk = true;  // the literal true is a boolean
Double d = 1.0d;  // The literal 1.0d is a double

"Fantastisk. Jeg tror, ​​jeg vil prøve at bruge ArrayList oftere."