getClass() पद्धत, क्लास ऑब्जेक्ट आणि रिफ्लेक्शनची ओळख - 1

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

"आता मुख्य कार्यक्रमाची वेळ आली आहे. आम्ही क्लास क्लासशी परिचित होऊ आणि रिफ्लेक्शनला स्पर्श करू.
तुम्हाला कदाचित आधीच कळले असेल की, Java मधील प्रत्येक गोष्ट एक ऑब्जेक्ट आहे. आणि ऑब्जेक्टला काय आवश्यक आहे? प्रत्येक ऑब्जेक्टची व्याख्या काय असते हे सर्व कशाबद्दल आहे?"

"वर्ग!"

"बरोबर! छान केले. प्रत्येक ऑब्जेक्टचा एक वर्ग असतो. परंतु ऑब्जेक्ट्सकडे परत जाणे... काही ऑब्जेक्ट्समध्ये संपूर्णपणे एक अस्तित्व असते, तर इतर फक्त ते व्यवस्थापित करण्यात मदत करतात."

"या नंतरच्या प्रकारात FileOutputStream आणि Thread चा समावेश होतो . जेव्हा तुम्ही थ्रेड ऑब्जेक्ट तयार करता, तेव्हा नवीन थ्रेड तयार केला जात नाही. start() पद्धत कॉल केल्यानंतर हा थ्रेड Java व्हर्च्युअल मशीनद्वारे तयार केला जातो. हा ऑब्जेक्ट प्रक्रिया व्यवस्थापित करण्यात मदत करतो."

" FileOutputStream बरोबरच : फाइल डिस्कवर साठवली जाते, आणि OS स्टोरेज आणि ऍक्सेस व्यवस्थापित करते. परंतु आम्ही पुन्हा एकदा Java व्हर्च्युअल मशीनच्या मदतीने फाइल ऑब्जेक्ट्सद्वारे त्याच्याशी संवाद साधू शकतो."

"हो, मला ते आधीच समजले आहे."

"म्हणून, वर्गांशी संवाद साधण्यासाठी क्लास नावाचा एक विशेष वर्ग आहे."

"त्याचा अंदाज लावणे कठीण नव्हते."

"हो. प्रत्येक वेळी जावा व्हर्च्युअल मशीन मेमरीमध्ये नवीन क्लास लोड करते तेव्हा ते क्लास ऑब्जेक्ट तयार करते, ज्याचा वापर तुम्ही लोड केलेल्या क्लासबद्दल विशिष्ट माहिती मिळवण्यासाठी करू शकता."

"प्रत्येक वर्ग आणि ऑब्जेक्ट « क्लास ऑब्जेक्ट » शी संबंधित आहे ."

उदाहरण वर्णन
Class clazz = Integer.class;
पूर्णांक वर्गाचा वर्ग ऑब्जेक्ट मिळवतो.
Class clazz = int.class;
इंट क्लासचा क्लास ऑब्जेक्ट मिळवतो.
Class clazz = "123".getClass();
स्ट्रिंग ऑब्जेक्टचे क्लास ऑब्जेक्ट मिळते.
Class clazz = new Object().getClass();
ऑब्जेक्ट ऑब्जेक्टचे क्लास ऑब्जेक्ट मिळवते.

"व्वा! किती मनोरंजक!"

"तुम्हाला आठवत आहे का की क्लास हा शब्द Java मधील कीवर्ड आहे आणि व्हेरिएबल नाव म्हणून वापरला जाऊ शकत नाही?"

"अरे हो, मला माहित आहे, मला माहित आहे. मी फक्त विसरलो."

"तुम्ही आधीपासून कुठेतरी क्लास ऑब्जेक्ट वापरला आहे का?"

"होय, जेव्हा आम्ही समान पद्धतीची स्वतःची अंमलबजावणी लिहिली तेव्हा आम्ही ते वापरले."

"होय, ऑब्जेक्ट्सचा वर्ग समान आहे की नाही हे तपासण्यासाठी तुम्ही 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();
वस्तूंच्या वर्गांची तुलना करते.

"मनोरंजक, पण मला वाटलं तितकं छान नाही."

"तुम्हाला ते मस्त हवे आहे? रिफ्लेक्शन पण आहे .  रिफ्लेक्शन मस्त आहे."

" प्रतिबिंब म्हणजे काय ?"

" रिफ्लेक्शन ही वर्गाची स्वतःबद्दल माहिती मिळवण्याची क्षमता आहे. Java मध्ये विशेष वर्ग आहेत:  फील्ड आणि पद्धत , जे वर्गांसाठी क्लास क्लास प्रमाणेच आहेत . ज्याप्रमाणे क्लास ऑब्जेक्ट्स आपल्याला वर्गाबद्दल माहिती मिळवू देतात त्याचप्रमाणे फील्ड ऑब्जेक्ट्स फील्डबद्दल माहिती देतात. , आणि मेथड ऑब्जेक्ट पद्धतीबद्दल माहिती प्रदान करते. आणि तुम्ही त्यांच्यासोबत काय करू शकता ते पहा:"

जावा कोड वर्णन
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)
स्ट्रिंग क्लासची लांबी पद्धत मिळवते आणि स्ट्रिंग s वर कॉल करते

"व्वा! आता खरच मस्त आहे!"