प्रतिबिंब एक है रन टाइम में किसी कक्षा के रन टाइम व्यवहार की जांच या संशोधन की प्रक्रिया । जावा परावर्तन एपीआई वर्ग और उसके सदस्यों में हेरफेर करने के लिए उपयोग किया जाता है जिसमें रनटाइम पर फ़ील्ड, विधियाँ, कंस्ट्रक्टर आदि शामिल हैं। इस लेख में हम जावा परावर्तन एपीआई को विस्तार से समझेंगे।
यह लेख निम्नलिखित बिंदुओं पर ध्यान केंद्रित करेगा:
- जावा परावर्तन एपीआई का उपयोग कहाँ किया जाता है?
- Java.lang.reflect पैकेज में कक्षा
- Java.lang.Class में उपयोग की जाने वाली विधियाँ
- क्लास क्लास की वस्तु कैसे प्राप्त करें?
- जावा परावर्तन एपीआई का उपयोग करने के फायदे और नुकसान
तो चलिए जावा रिफ्लेक्शन एपीआई पर इस लेख में इन बिंदुओं के साथ शुरुआत करते हैं
जावा परावर्तन एपीआई का उपयोग कहाँ किया जाता है?
परावर्तन एपीआई मुख्य रूप से उपयोग किया जाता है:
- आईडीई (एकीकृत विकास पर्यावरण) उदा। ग्रहण, माई ग्रहण, नेटबीन्स आदि।
- डिबगर
- परीक्षण उपकरण आदि
तो जावा लैंग रिफ्लेक्ट पैकेज में क्लास क्या है?
Java.lang.reflect पैकेज में कक्षा?
प्रतिबिंब को लागू करने के लिए java.lang.package में विभिन्न जावा कक्षाओं की सूची निम्न है-
- खेत : इस वर्ग का उपयोग घोषणात्मक जानकारी जैसे डेटाटाइप, एक्सेस मॉडिफायर, नाम और एक चर के मूल्य को इकट्ठा करने के लिए किया जाता है।
- तरीका : इस वर्ग का उपयोग ऐक्सेस संशोधक, वापसी प्रकार, नाम, पैरामीटर प्रकार और एक विधि के अपवाद प्रकार जैसे घोषणात्मक जानकारी इकट्ठा करने के लिए किया जाता है।
- बिल्डर : इस वर्ग का उपयोग ऐक्सेस संशोधक, नाम और एक निर्माता के पैरामीटर प्रकार जैसे सूचनात्मक जानकारी इकट्ठा करने के लिए किया जाता है।
- संपादित करें : इस वर्ग का उपयोग किसी विशेष पहुंच संशोधक के बारे में जानकारी इकट्ठा करने के लिए किया जाता है।
कोई बात नहीं, हम जावा प्रतिबिंब एपीआई विधियों पर एक नज़र डालते हैं,
Java.lang.Class में उपयोग की जाने वाली विधियाँ
तरीका | विवरण सी + + में डेटा अमूर्त |
सार्वजनिक स्ट्रिंग getName () | वर्ग का नाम देता है |
सार्वजनिक स्थिर वर्ग forName (स्ट्रिंग className) ClassNotFoundException को फेंकता है | कक्षा को लोड करता है और कक्षा वर्ग का संदर्भ देता है। |
सार्वजनिक वस्तु newInstance () फेंकता है InstantiationException, IllegalAccessException | नए उदाहरण बनाता है। |
सार्वजनिक बूलियन है इन्टरफेस () | जाँचता है कि क्या यह इंटरफ़ेस है। |
सार्वजनिक बूलियन हैअरे () | जाँचता है कि क्या यह सरणी है। |
सार्वजनिक बूलियनप्रतिस्पर्धी () है | जाँच करता है कि क्या यह आदिम है। |
पब्लिक क्लास getSuperclass () | सुपर क्लास क्लास संदर्भ देता है। |
सार्वजनिक क्षेत्र [] getDeclaredFields () फेंकता SecurityException | इस वर्ग के क्षेत्रों की कुल संख्या लौटाता है। |
सार्वजनिक विधि [] getDeclaredMethods () SecurityException को फेंकता है | इस वर्ग के तरीकों की कुल संख्या लौटाता है। |
सार्वजनिक कंस्ट्रक्टर [] getDeclaredConstructors () फेंकता SecurityException | इस वर्ग के निर्माणकर्ताओं की कुल संख्या लौटाता है। |
सार्वजनिक विधि getDeclaredMethod (स्ट्रिंग नाम, वर्ग [] पैरामीटरटाइप्स) NoSuchMethodException, SecurityException को फेंकता है | विधि वर्ग आवृत्ति लौटाता है। |
क्लास क्लास की वस्तु कैसे प्राप्त करें?
क्लास क्लास का उदाहरण प्राप्त करने के 3 तरीके हैं। वे इस प्रकार हैं:
- forName () क्लास क्लास की विधि
- getClass () ऑब्जेक्ट क्लास की विधि
- .class सिंटैक्स
forName () क्लास क्लास की विधि
- कक्षा को गतिशील रूप से लोड करने के लिए उपयोग किया जाता है।
- क्लास क्लास का उदाहरण देता है।
- यदि आपको क्लास का पूरी तरह से योग्य नाम पता है तो इसका इस्तेमाल किया जाना चाहिए। इसका इस्तेमाल आदिम प्रकारों के लिए नहीं किया जा सकता है।
आइए forName () विधि का सरल उदाहरण देखें।
वर्ग सरल {} वर्ग परीक्षण {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग args []) {कक्षा c = Class.forName ('सरल') System.out.println (c.getName ())}}
आउटपुट:
सरल
जावा परावर्तन: API getClass () ऑब्जेक्ट क्लास की विधि
यह क्लास क्लास का उदाहरण देता है। यदि आप प्रकार जानते हैं तो इसका उपयोग किया जाना चाहिए। इसके अलावा, यह आदिम के साथ इस्तेमाल किया जा सकता है।
क्लास सिंपल {} क्लास टेस्ट {void प्रिंटनेम (ऑब्जेक्ट ओब्ज) {क्लास c = obj.getClass () System.out.println (c.getName ()))} पब्लिक स्टैटिक शून्य मेन (स्ट्रिंग args []) {Simple s = new सरल () टेस्ट t = नया टेस्ट () t.printName (s)}}
आउटपुट:
सरल
.Class सिंटैक्स
यदि कोई प्रकार उपलब्ध है, लेकिन कोई उदाहरण नहीं है, तो टाइप के नाम से '.class' जोड़कर एक वर्ग प्राप्त करना संभव है। इसका उपयोग आदिम डेटा प्रकार के लिए भी किया जा सकता है।
वर्ग टेस्ट {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग args []) {कक्षा c = boolean.class System.out.println (c.getName ()) वर्ग c2 = Test.class System.out.println (c2.getName ()) }}
आउटपुट:
बूलियन
परीक्षा
अब हम इस जावा रिफ्लेक्शन एपीआई लेख को जारी रखते हैं
java system.exit (0)
जावा परावर्तन एपीआई का उपयोग करने के फायदे और नुकसान
जावा परावर्तन एपीआई का उपयोग करने के लाभ
- विस्तार सुविधाएँ: एक अनुप्रयोग बाहरी, उपयोगकर्ता-परिभाषित वर्गों का उपयोग उनके पूर्ण-योग्य नामों का उपयोग करके अस्थिरता वस्तुओं का उदाहरण बनाकर कर सकता है।
- डिबगिंग और परीक्षण उपकरण : डिबगर्स कक्षाओं में निजी सदस्यों की जांच करने के लिए प्रतिबिंब की संपत्ति का उपयोग करते हैं।
जावा परावर्तन एपीआई का उपयोग करने के नुकसान
- प्रदर्शन ओवरहेड: चिंतनशील संचालन में उनके गैर-चिंतनशील समकक्षों की तुलना में धीमी गति से प्रदर्शन होता है, और उन्हें कोड के वर्गों में बचा जाना चाहिए जिन्हें प्रदर्शन-संवेदनशील अनुप्रयोगों में अक्सर कहा जाता है।
- आंतरिक का एक्सपोजर: चिंतनशील कोड अमूर्तता को तोड़ता है और इसलिए मंच के उन्नयन के साथ व्यवहार को बदल सकता है।
इस प्रकार हम 'जावा रिफ्लेक्शन एपीआई' पर इस लेख के अंत में आए हैं। यदि आप और अधिक सीखना चाहते हैं,इसकी जाँच पड़ताल करो Edureka, एक विश्वसनीय ऑनलाइन शिक्षण कंपनी द्वारा। एडुर्का के जावा जे 2 ईई और एसओए प्रशिक्षण और प्रमाणन पाठ्यक्रम आपको हाइबरनेट और स्प्रिंग जैसे विभिन्न जावा फ्रेमवर्क के साथ कोर और उन्नत जावा अवधारणाओं दोनों के लिए प्रशिक्षित करने के लिए डिज़ाइन किया गया है।
क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया इस लेख के टिप्पणी अनुभाग में इसका उल्लेख करें और हम जल्द से जल्द आपके पास वापस आ जाएंगे।