"ठीक है, अंत में - जेनरिक पर एक और छोटा सबक।"

"अब मैं आपको बताने जा रहा हूं कि टाइप इरेज़र से कैसे बचा जाए।"

"आह। यही तो मैं जानना चाहता हूँ।"

"जैसा कि आप शायद पहले से ही जानते हैं, जावा में एक वर्ग प्रकार है, जिसका उपयोग किसी वस्तु के वर्ग के संदर्भ को संग्रहीत करने के लिए किया जाता है।" यहां कुछ उदाहरण दिए गए हैं: "

उदाहरण
Class clazz = Integer.class;
Class clazz = String.class;
Class clazz = "abc".getClass();

"आह।"

"लेकिन जो आप शायद नहीं जानते हैं वह यह है कि क्लास नामक एक सामान्य वर्ग भी है। और सामान्य वर्ग चर केवल प्रकार के तर्क द्वारा निर्धारित प्रकार के संदर्भों को संग्रहीत कर सकते हैं।  यहां कुछ उदाहरण दिए गए हैं:"

उदाहरण
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

"ऐसा क्यों काम करता है?"

"ठीक है, पूर्णांक (यानी Integer.class) के लिए वर्ग क्षेत्र का मान वास्तव में एक वर्ग <पूर्णांक> वस्तु है।"

"लेकिन चलो जारी रखें।"

"इस तथ्य का लाभ उठाते हुए कि क्लास <टी> - एक सामान्य है और इस प्रकार का चर केवल टाइप टी का मान रख सकता है, आप उन्हें इस तरह से एक साथ रख सकते हैं:"

उदाहरण
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
 }
}
प्रयोग
Zoo<Tiger> zoo = new Zoo<Tiger>(Tiger.class); // This is where we pass the type!
Tiger tiger = zoo.createNewAnimal();

"यह एक सुपर ट्रिकी पैंतरेबाज़ी नहीं है - हम केवल वांछित प्रकार के लिए एक संदर्भ पास कर रहे हैं। लेकिन, अगर हम क्लास <टी> के बजाय केवल क्लास का उपयोग करते हैं, तो कोई गलती से दो अलग-अलग प्रकार पास कर सकता है: एक टी तर्क के रूप में , और दूसरा कंस्ट्रक्टर के लिए।"

"आह। मैं समझता हूं। अलौकिक कुछ भी नहीं हुआ है, लेकिन कुछ भी भयानक नहीं है। प्रकार का एक संदर्भ है, और आप इसका उपयोग कर सकते हैं। यह काम करता है और यह मेरे लिए काफी अच्छा है।"

"लड़का आदमी बन जाता है! 'यह काम करता है और यह मेरे लिए काफी अच्छा है' अक्सर सबसे अच्छा विकल्प होता है।"

"अब जावा में बहुत सी चीजें फिर से की जा सकती हैं, लेकिन हमें पुराने कोड के साथ संगतता बनाए रखने की जरूरत है।"

"हजारों लोकप्रिय पॉलिश लाइब्रेरी आज जावा के लिए सबसे शक्तिशाली तर्क हैं। इस प्रकार, पिछड़ी संगतता बनाए रखते हुए जावा सबसे लोकप्रिय भाषा बनी हुई है, इसलिए यह कट्टरपंथी नवाचारों को पेश नहीं कर सकती है।"

"ठीक है, मैं ब्लैकजैक के साथ अपना जावा बनाने जा रहा हूं और ..."

"ठीक है, मैं पहले ही दिन से थक गया हूँ। अगली बार तक।"

"अलविदा, ऋषि, और इस तरह के एक दिलचस्प पाठ के लिए धन्यवाद।"