"ठीक आहे, शेवटी - जेनेरिकवरील आणखी एक छोटा धडा."
"आता मी तुम्हाला टाईप इरेजर कसे मिळवायचे ते सांगणार आहे."
"अहो. ते मला जाणून घ्यायचे आहे."
"तुम्हाला आधीच माहित आहे की, Java मध्ये क्लास प्रकार आहे, जो ऑब्जेक्टच्या क्लासचा संदर्भ संग्रहित करण्यासाठी वापरला जातो. "ही काही उदाहरणे आहेत:"
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) साठी वर्ग फील्डचे मूल्य खरेतर वर्ग<Integer> ऑब्जेक्ट आहे."
"पण चला चालू ठेवूया."
"क्लास<T> — हे जेनेरिक आहे आणि या प्रकारच्या व्हेरिएबलमध्ये फक्त T प्रकाराचे मूल्य असू शकते याचा फायदा घेऊन, तुम्ही त्यांना अशा प्रकारे एकत्र ठेवू शकता:"
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();
"ही एक अतिशय अवघड युक्ती नाही — आम्ही फक्त इच्छित प्रकाराचा संदर्भ देत आहोत. परंतु, जर आम्ही क्लास<T> ऐवजी क्लास वापरला, तर कोणीतरी चुकून दोन भिन्न प्रकार पास करू शकतो: एक T युक्तिवाद म्हणून , आणि दुसरे कन्स्ट्रक्टरला."
"अहो. मला समजले. अलौकिक काहीही घडले नाही, परंतु काहीही भयंकर नाही. प्रकाराचा संदर्भ आहे, आणि तुम्ही ते वापरू शकता. ते कार्य करते आणि ते माझ्यासाठी पुरेसे आहे."
"मुलगा माणूस बनतो! 'हे कार्य करते आणि ते माझ्यासाठी पुरेसे आहे' हा बहुतेकदा सर्वोत्तम पर्याय असतो."
"जावामध्ये आता बर्याच गोष्टी पुन्हा केल्या जाऊ शकतात, परंतु आम्हाला जुन्या कोडसह सुसंगतता राखण्याची आवश्यकता आहे."
"हजारो लोकप्रिय पॉलिश्ड लायब्ररी आज जावासाठी सर्वात शक्तिशाली युक्तिवाद आहेत. अशा प्रकारे, जावा ही मागासलेली सुसंगतता राखून सर्वात लोकप्रिय भाषा राहिली आहे, त्यामुळे ती मूलगामी नवकल्पना सादर करू शकत नाही."
"बरं, मी ब्लॅकजॅकसह माझा स्वतःचा जावा तयार करणार आहे आणि..."
"ठीक आहे, मी दिवसापासून थकलो आहे. पुढच्या वेळेपर्यंत."
"अलविदा, ऋषी, आणि अशा मनोरंजक धड्याबद्दल धन्यवाद."
GO TO FULL VERSION