"Nog een leuk onderwerp."

"De verrassingen blijven maar komen! Ben ik jarig?"

"Vandaag vertel ik je over generieke geneesmiddelen. Generieke geneesmiddelen zijn typen die een parameter hebben. In Java kun je met containerklassen het type van hun innerlijke objecten aangeven."

"Als we een generieke variabele declareren, geven we twee typen aan in plaats van één: het type variabele en het type gegevens dat erin wordt opgeslagen."

"ArrayList is een goed voorbeeld. Wanneer we een nieuw ArrayList-object maken, is het handig om aan te geven welk type waarden in deze lijst worden opgeslagen."

Code Uitleg
ArrayList<String> list = new ArrayList<String>();
Maak een ArrayList-variabele met de naam list.
Wijs er een ArrayList-object aan toe.
Deze lijst kan alleen String- objecten opslaan.
ArrayList list = new ArrayList();
Maak een ArrayList-variabele met de naam list.
Wijs er een ArrayList-object aan toe. Deze lijst kan alle waarden opslaan .
ArrayList<Integer> list = new ArrayList<Integer>();
Maak een ArrayList-variabele met de naam list.
Wijs er een ArrayList-object aan toe.
Deze lijst kan alleen Integeren intwaarden opslaan.

"Klinkt super interessant. Vooral het gedeelte over het opslaan van waarden van welk type dan ook ."

"Het lijkt alleen maar een goede zaak. Als we in de ene methode strings in een ArrayList stoppen en vervolgens verwachten dat het getallen bevat in een andere methode, zal het programma crashen (beëindigen met een fout)."

"Ik zie."

"Voor nu maken we geen eigen klassen met typeparameters. We gebruiken alleen de bestaande."

"Kan elke klasse een typeparameter zijn, zelfs een die ik schrijf?"

"Ja. Elk type behalve primitieve typen. Alle typeparameters moeten erven van de klasse Object."

" Bedoel je dat ik ArrayList<int> niet kan schrijven ? "

"Inderdaad, dat kan niet. Maar Java-ontwikkelaars hebben wrapper-klassen geschreven voor elk van de primitieve typen. Deze klassen erven Object . Zo ziet het eruit:"

Primitieve soort Klas Lijst
int Geheel getal ArrayLijst< geheel getal >
dubbele Dubbele ArrayList< Dubbel >
booleaans Booleaans ArrayList< Boolean >
char Karakter ArrayList< Karakter >
byte Byte ArrayList< Byte >

"Je kunt eenvoudig primitieve klassen en hun analogen (wrapperklassen) aan elkaar toewijzen:"

Voorbeelden
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

"Geweldig. Ik denk dat ik zal proberen ArrayList vaker te gebruiken."