– Egy újabb klassz téma.

"A meglepetések folyamatosan jönnek! Ez a születésnapom?"

"Ma az általánosokról fogok beszélni. Az általános típusok olyan típusok, amelyeknek van paramétere. A Java-ban a konténerosztályok lehetővé teszik a belső objektumaik típusának megadását."

"Amikor egy általános változót deklarálunk, egy helyett két típust adunk meg: a változó típusát és az általa tárolt adatok típusát."

"Az ArrayList jó példa. Amikor új ArrayList objektumot hozunk létre, célszerű megadni a listán belül tárolt értékek típusát."

Kód Magyarázat
ArrayList<String> list = new ArrayList<String>();
Hozzon létre egy ArrayList változót list.
Rendeljen hozzá egy ArrayList objektumot. Ez a lista csak String objektumokat
tud tárolni .
ArrayList list = new ArrayList();
Hozzon létre egy ArrayList változót list.
Rendeljen hozzá egy ArrayList objektumot. Ez a lista bármilyen értéket tárolhat .
ArrayList<Integer> list = new ArrayList<Integer>();
Hozzon létre egy ArrayList változót list.
Rendeljen hozzá egy ArrayList objektumot. Ez a lista csak és értékeket
tárolhat .Integerint

"Nagyon érdekesen hangzik. Főleg az a rész, amely bármilyen típusú értékek tárolásáról szól ."

"Csak úgy tűnik, hogy ez jó dolog. A valóságban, ha az egyik metódusban karakterláncokat teszünk egy ArrayList-be, majd azt várjuk, hogy egy másik metódusban számokat tartalmazzon, a program összeomlik (hibával leáll)."

"Látom."

"Egyelőre nem hozunk létre saját osztályokat típusparaméterekkel, csak a meglévőket használjuk."

"Bármelyik osztály lehet típusparaméter, még az is, amit én írok?"

"Igen. Bármilyen típus, kivéve a primitív típusokat. Minden típusparaméternek az Object osztályból kell örökölnie."

" Úgy érted, hogy nem tudok ArrayList<int>et írni? "

"Valóban nem lehet. De a Java fejlesztők minden primitív típushoz írtak burkoló osztályokat. Ezek az osztályok az Object -et öröklik . Így néz ki:"

Primitív típus Osztály Lista
int Egész szám ArrayList< Integer >
kettős Kettős ArrayList< Double >
logikai érték Boolean ArrayList< logikai >
char karakter ArrayList< Karakter >
byte Byte ArrayList< Byte >

"Könnyen hozzárendelheti egymáshoz a primitív osztályokat és analógjaikat (wrapper osztályokat):"

Példák
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

"Remek. Azt hiszem, megpróbálom gyakrabban használni az ArrayList-et."