"Et annet kult tema."

"Overraskelsene bare fortsetter å komme! Er det bursdagen min?"

"I dag skal jeg fortelle deg om generika. Generiske er typer som har en parameter. I Java lar containerklasser deg angi typen av deres indre objekter."

"Når vi erklærer en generisk variabel, angir vi to typer i stedet for én: variabeltypen og typen data den lagrer."

"ArrayList er et godt eksempel. Når vi lager et nytt ArrayList-objekt, er det praktisk å indikere typen verdier som vil bli lagret i denne listen."

Kode Forklaring
ArrayList<String> list = new ArrayList<String>();
Lag en ArrayList-variabel kalt list.
Tilordne et ArrayList-objekt til det.
Denne listen kan bare lagre strengobjekter .
ArrayList list = new ArrayList();
Lag en ArrayList-variabel kalt list.
Tilordne et ArrayList-objekt til det. Denne listen kan lagre alle verdier .
ArrayList<Integer> list = new ArrayList<Integer>();
Lag en ArrayList-variabel kalt list.
Tilordne et ArrayList-objekt til det.
Denne listen kan bare lagre Integerog intverdier.

"Høres veldig interessant ut. Spesielt delen om lagring av verdier av enhver type ."

"Det virker bare som det er en god ting. I virkeligheten, hvis vi legger strenger inn i en ArrayList i en metode og deretter forventer at den skal inneholde tall i en annen metode, vil programmet krasje (avsluttes med en feil)."

"Jeg skjønner."

"Foreløpig vil vi ikke lage våre egne klasser med typeparametere. Vi bruker bare de eksisterende."

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

"Ja. Enhver type bortsett fra primitive typer. Alle typeparametere må arve fra Object-klassen."

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

"Det kan du faktisk ikke. Men Java-utviklere har skrevet wrapper-klasser for hver av de primitive typene. Disse klassene arver Object . Slik ser det ut:"

Primitiv type Klasse Liste
int Heltall ArrayList< Heltall >
dobbelt Dobbelt ArrayList< Double >
boolsk boolsk ArrayList< Boolsk >
røye Karakter ArrayList< Tegn >
byte Byte ArrayList< Byte >

"Du kan enkelt tilordne primitive klasser og deres analoger (innpakningsklasser) til hverandre:"

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

"Flott. Jeg tror jeg skal prøve å bruke ArrayList oftere."