"Ä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."