प्रतिबिंब के माध्यम से जावा में नेस्टेड कक्षाओं का इंस्टेंटेशन
मानक प्रतिबिंब विधियों का उपयोग करके प्रदान किए गए जावा कोड में परिभाषित आंतरिक वर्ग को इंस्टेंट करने में असमर्थता है जावा डेवलपर्स द्वारा सामना की जाने वाली एक आम समस्या। जब सीधे Class.newInstance() का उपयोग करके एक उदाहरण बनाने का प्रयास किया जाता है, तो संलग्नक वर्ग के उदाहरण का प्रतिनिधित्व करने वाले एक छिपे हुए पैरामीटर की उपस्थिति के कारण समस्या उत्पन्न होती है।
एक आंतरिक वर्ग को सफलतापूर्वक इंस्टेंट करने के लिए, इसे नियोजित करना आवश्यक है Class.getDeclaredConstructor() कंस्ट्रक्टर तक पहुंचने और तर्क के रूप में संलग्न वर्ग का एक उदाहरण प्रदान करने के लिए। निम्नलिखित कोड स्निपेट इस दृष्टिकोण को दर्शाता है:
// Exceptions omitted for brevity
Class> enclosingClass = Class.forName("com.mycompany.Mother");
Object enclosingInstance = enclosingClass.newInstance();
Class> innerClass = Class.forName("com.mycompany.Mother$Child");
Constructor> ctor = innerClass.getDeclaredConstructor(enclosingClass);
Object innerInstance = ctor.newInstance(enclosingInstance);
वैकल्पिक रूप से, यदि नेस्टेड क्लास एनक्लोजिंग इंस्टेंस पर निर्भर नहीं है, तो एक अधिक सीधा समाधान यह है कि इसे स्टैटिक नेस्टेड क्लास के रूप में घोषित किया जाए:
public class Mother {
public static class Child {
public void doStuff() {
// ...
}
}
}
इन दृष्टिकोणों का उपयोग करके, डेवलपर्स जावा में प्रतिबिंब का उपयोग करके आश्रित और स्वतंत्र दोनों आंतरिक वर्गों को प्रभावी ढंग से इंस्टेंट कर सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3