"Nos, végre egy újabb kis lecke a generikus gyógyszerekről."

"Most elmondom, hogyan lehet megkerülni a típustörlést."

– Ah. Ezt szeretném tudni.

"Amint azt valószínűleg már tudja, a Java osztály típussal rendelkezik, amely egy objektum osztályára való hivatkozás tárolására szolgál. "Íme néhány példa:

Példák
Class clazz = Integer.class;
Class clazz = String.class;
Class clazz = "abc".getClass();

– Ah.

"De valószínűleg nem tudja, hogy létezik egy osztály, az osztály is. Az általános osztályváltozók pedig csak a type argumentum által meghatározott típusra utalhatnak.  Íme néhány példa:

Példák
Class<Integer> clazz1 = Integer.class; // Everything works well
Class<String> clazz2 = Integer.class; // Compilation error
Class<String> clazz1 = String.class; // Everything works well
Class<String> clazz2 = int.class; // Compilation error
Class<? extends String> clazz1 = "abc".getClass(); // Everything works well
Class<Object> clazz2 = "abc".getClass(); // Compilation error

– Miért működik ez így?

"Nos, az Integer osztály mezőjének értéke (azaz Integer.class) valójában egy Class<Integer> objektum."

– De menjünk tovább.

"Kihasználva azt a tényt, hogy a Class<T> — egy általános, és hogy az ilyen típusú változók csak T típusú értéket tartalmazhatnak, ezeket a következőképpen rakhatja össze finoman:"

Példa
class Zoo<T>
{
 Class<T> clazz;
 ArrayList<T> animals = new ArrayList<T>

 Zoo(Class<T> clazz)
 {
  this.clazz = clazz;
 }

 public T createNewAnimal()
 {
  T animal = clazz.newInstance();
  animals.add(animal);
  return animal
 }
}
Használat
Zoo<Tiger> zoo = new Zoo<Tiger>(Tiger.class); // This is where we pass the type!
Tiger tiger = zoo.createNewAnimal();

"Ez nem egy rendkívül trükkös manőver – egyszerűen csak hivatkozást adunk át a kívánt típusra. De ha egyszerűen az osztályt használjuk a Class <T> helyett, akkor valaki véletlenül két különböző típust ad át: az egyiket T argumentumként , egy másikat pedig a kivitelezőnek."

"Ah. értem. Semmi természetfeletti nem történt, de semmi szörnyű. Van utalás a típusra, és használhatod. Működik, és ez nekem elég."

"A fiúból férfi lesz! A "működik, és ez elég jó nekem" gyakran a legjobb megoldás."

"Most sok mindent át lehetne csinálni a Java-ban, de meg kell őriznünk a kompatibilitást a régi kóddal."

"A több tízezer népszerű csiszolt könyvtár a legerősebb érv ma a Java mellett. Így a Java továbbra is a legnépszerűbb nyelv a visszafelé kompatibilitás fenntartásával, így nem tud radikális újításokat bevezetni."

"Nos, meg fogom építeni a saját Java-mat blackjackkel és…"

"Rendben, már fáradt vagyok a naptól. A következő alkalomig."

"Viszlát, Rishi, és köszönöm ezt az érdekes leckét."