GetClass () विधि, क्लास ऑब्जेक्ट और रिफ्लेक्शन का परिचय - 1

"हाय, अमीगो!"

"अब यह मुख्य कार्यक्रम का समय है। हम क्लास क्लास से परिचित होंगे और रिफ्लेक्शन पर स्पर्श करेंगे।
जैसा कि आप शायद पहले ही महसूस कर चुके हैं, जावा में सब कुछ एक ऑब्जेक्ट है। और एक ऑब्जेक्ट की क्या आवश्यकता है? प्रत्येक ऑब्जेक्ट में क्या है जो परिभाषित करता है यह सब क्या है?"

"एक वर्ग!"

"ठीक है! शाबाश। प्रत्येक वस्तु का एक वर्ग होता है। लेकिन वस्तुओं पर वापस जाना ... कुछ वस्तुओं में पूरी तरह से एक इकाई होती है, जबकि अन्य बस इसे प्रबंधित करने में मदद करती हैं।"

"इस बाद वाले प्रकार में FileOutputStream और थ्रेड शामिल हैं । जब आप थ्रेड ऑब्जेक्ट बनाते हैं, तो एक नया थ्रेड नहीं बनाया जाता है। प्रारंभ () विधि को कॉल करने के बाद जावा वर्चुअल मशीन द्वारा थ्रेड बनाया जाता है। यह ऑब्जेक्ट केवल प्रक्रिया को प्रबंधित करने में मदद करता है।"

" फ़ाइलऑटपुटस्ट्रीम के साथ भी: फ़ाइल डिस्क पर संग्रहीत है, और ओएस भंडारण और पहुंच का प्रबंधन करता है। लेकिन हम जावा वर्चुअल मशीन की मदद से एक बार फिर फाइल ऑब्जेक्ट्स के माध्यम से इसके साथ बातचीत कर सकते हैं।"

"हाँ, मैं इसे पहले ही समझ चुका हूँ।"

"तो, कक्षाओं के साथ बातचीत करने के लिए क्लास नामक एक विशेष वर्ग है।"

"यह अनुमान लगाना कठिन नहीं था।"

"हां। हर बार जब जावा वर्चुअल मशीन मेमोरी में एक नई क्लास लोड करती है, तो यह एक क्लास ऑब्जेक्ट बनाता है, जिसका उपयोग आप लोडेड क्लास के बारे में विशिष्ट जानकारी प्राप्त करने के लिए कर सकते हैं।"

"प्रत्येक वर्ग और वस्तु एक « कक्षा वस्तु » से जुड़ी होती है।"

उदाहरण विवरण
Class clazz = Integer.class;
इंटीजर क्लास का क्लास ऑब्जेक्ट प्राप्त करता है।
Class clazz = int.class;
इंट क्लास का क्लास ऑब्जेक्ट प्राप्त करता है।
Class clazz = "123".getClass();
एक स्ट्रिंग ऑब्जेक्ट का क्लास ऑब्जेक्ट प्राप्त करता है।
Class clazz = new Object().getClass();
ऑब्जेक्ट ऑब्जेक्ट की क्लास ऑब्जेक्ट प्राप्त करता है।

"वाह! कितना दिलचस्प है!"

"क्या आपको याद है कि शब्द वर्ग जावा में एक कीवर्ड है और इसे चर नाम के रूप में उपयोग नहीं किया जा सकता है?"

"अरे हाँ, मुझे पता है, मुझे पता है। मैं बस भूल गया।"

"क्या आपने पहले ही क्लास ऑब्जेक्ट का कहीं इस्तेमाल किया है?"

"हां, हमने इसका इस्तेमाल तब किया जब हमने बराबर पद्धति का अपना कार्यान्वयन लिखा।"

"हां, आप यह जांचने के लिए getClass() विधि का उपयोग कर सकते हैं कि ऑब्जेक्ट्स में एक ही कक्षा है या नहीं।"

"और आप इस वस्तु के साथ क्या कर सकते हैं?"

"ठीक है, बहुत सी बातें:"

जावा कोड विवरण
Class s = int.class;
String name = s.getName();
वर्ग का नाम मिलता है।
Class s = Class.forName("java.lang.String");
नाम से एक वर्ग प्राप्त करता है।
Object o1 = String.valueOf(1);
Object o2 = 123 + "T";
o1.getClass() == o2.getClass();
वस्तुओं की कक्षाओं की तुलना करता है।

"दिलचस्प, लेकिन उतना अच्छा नहीं जितना मैंने सोचा था।"

"आप चाहते हैं कि यह कूल हो? इसमें रिफ्लेक्शन भी है ।  रिफ्लेक्शन सुपर कूल है।"

" प्रतिबिंब क्या है ?"

" प्रतिबिंब एक वर्ग की स्वयं के बारे में जानकारी प्राप्त करने की क्षमता है। जावा में विशेष वर्ग हैं:  फ़ील्ड और विधि , जो कक्षाओं के लिए कक्षा वर्ग के समान हैं । जिस प्रकार कक्षा की वस्तुएँ आपको एक वर्ग के बारे में जानकारी प्राप्त करने देती हैं, फ़ील्ड वस्तुएँ एक क्षेत्र के बारे में जानकारी प्रदान करती हैं। , और मेथड ऑब्जेक्ट एक मेथड के बारे में जानकारी प्रदान करता है। और देखें कि आप उनके साथ क्या कर सकते हैं:"

जावा कोड विवरण
Class[] interfaces = List.class.getInterfaces();
लिस्ट क्लास के इंटरफेस के लिए क्लास ऑब्जेक्ट्स की सूची प्राप्त करता है
Class parent = String.class.getSuperclass();
स्ट्रिंग क्लास के पैरेंट क्लास का क्लास ऑब्जेक्ट प्राप्त करता है
Method[] methods = List.class.getMethods();
सूची वर्ग के तरीकों की एक सूची प्राप्त करता है
String s = String.class.newInstance();
एक नया स्ट्रिंग बनाता है
String s = String.class.newInstance();
Method m = String.class.getMethod("length");
int length = (int) m.invoke(s)
स्ट्रिंग वर्ग की लंबाई विधि प्राप्त करें और इसे स्ट्रिंग एस पर कॉल करें

"वाह! अब यह वास्तव में अच्छा है!"