"Ännu ett coolt ämne."

"Överraskningarna kommer bara! Är det min födelsedag?"

"Idag ska jag berätta om generika. Generika är typer som har en parameter. I Java låter containerklasser dig ange typen av deras inre objekt."

"När vi deklarerar en generisk variabel anger vi två typer istället för en: variabeltypen och typen av data som den lagrar."

"ArrayList är ett bra exempel. När vi skapar ett nytt ArrayList-objekt är det bekvämt att ange vilken typ av värden som kommer att lagras i den här listan."

Koda Förklaring
ArrayList<String> list = new ArrayList<String>();
Skapa en ArrayList-variabel som heter list.
Tilldela ett ArrayList-objekt till det.
Den här listan kan bara lagra strängobjekt .
ArrayList list = new ArrayList();
Skapa en ArrayList-variabel som heter list.
Tilldela ett ArrayList-objekt till det. Denna lista kan lagra alla värden .
ArrayList<Integer> list = new ArrayList<Integer>();
Skapa en ArrayList-variabel som heter list.
Tilldela ett ArrayList-objekt till det.
Denna lista kan bara lagra Integeroch intvärden.

"Låter superintressant. Speciellt delen om att lagra värden av alla slag ."

"Det verkar bara som att det är bra. I verkligheten, om vi lägger in strängar i en ArrayList i en metod och sedan förväntar oss att den ska innehålla siffror i en annan metod, kommer programmet att krascha (avslutas med ett fel)."

"Jag förstår."

"För närvarande kommer vi inte att skapa våra egna klasser med typparametrar. Vi kommer bara att använda de befintliga."

"Kan vilken klass som helst vara en typparameter, även en som jag skriver?"

"Ja. Alla typer utom primitiva typer. Alla typparametrar måste ärva från klassen Object."

" Du menar att jag inte kan skriva ArrayList<int>? "

"Det kan du faktiskt inte. Men Java-utvecklare har skrivit omslagsklasser för var och en av de primitiva typerna. Dessa klasser ärver Object . Så här ser det ut:"

Primitiv typ Klass Lista
int Heltal ArrayList< Heltal >
dubbel Dubbel ArrayList< Dubbel >
booleskt Boolean ArrayList< Boolean >
röding Karaktär ArrayList< Tecken >
byte Byte ArrayList< Byte >

"Du kan enkelt tilldela primitiva klasser och deras analoger (omslagsklasser) till varandra:"

Exempel
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

"Bra. Jag tror att jag kommer att försöka använda ArrayList oftare."