मैं जावा में किसी विधि के पैरामीटर के रूप में कक्षा प्रकार को पास करना चाहता हूं जिसमें से एक ही कन्स्ट्रक्टर पैरामीटर है। और उस विधि में उस क्लास का उदाहरण बनाएं। यह संभव है?पैरामीटर के रूप में गुजरने वाले वर्ग प्रकार और इसके उदाहरण का निर्माण
उत्तर
उदाहरण बनाने के लिए प्रतिबिंब का उपयोग करना है उदाहरण बनाने के लिए डिफ़ॉल्ट नो-एर्ग कन्स्ट्रक्टर।
Constructor<?> constructor = clazz.getConstructor(String.class);
Object object = constructor.newInstance(new Object[] { strArgument });
उदाहरण बनाने के लिए यदि आपके पास कुछ अन्य कन्स्ट्रक्टर है जो तर्क लेता है।
आपको ऐसा करने के लिए प्रतिबिंब का उपयोग करने की आवश्यकता है, लेकिन हाँ यह निश्चित रूप से संभव है।
void MyMethod(Class className)
{
try {
Object obj = className.newInstance();
//obj is a newly created object of the passed in type
}
catch (Exception ex) { }
}
आप प्रतिबिंब की तलाश में हैं।
आपका विधि कुछ इस तरह दिखेगा:
Object obj = clazz.newInstance();
इस का उपयोग करेगा:
public void m1(Class c) {
try {
Object obj = c.newInstance();
//do something with your new instance
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
}
}
प्रतिबिंब एपीआई के लिए Oracle डॉक here
हाँ आप कर सकते हैं
void x(Class cls) throws InstantiationException, IllegalAccessException {
cls.newInstance();
}
ध्यान दें कि Class.newInstance साथ
IllegalAccessException विफल हो सकता है - अगर वर्ग या उसके nullary निर्माता सुलभ नहीं है।
इंस्टेंटेशन अपवाद - यदि यह कक्षा एक अमूर्त वर्ग, एक इंटरफेस, एक सरणी वर्ग, एक आदिम प्रकार, या शून्य का प्रतिनिधित्व करती है; या अगर कक्षा में कोई निरर्थक कन्स्ट्रक्टर नहीं है; या अगर किसी अन्य कारण के लिए तत्काल विफल रहता है।
अधिक
- 1. Knockout.js - गुजरने वाले पैरामीटर
- 2. PHP में गुजरने वाले पैरामीटर में
- 3. जावा पैरामीटर गुजरने वाले प्रश्न
- 4. गुजरने वाले पैरामीटर: उद्देश्य जावास्क्रिप्ट
- 5. tabs.executeScript - गुजरने वाले पैरामीटर और पुस्तकालयों का उपयोग करना?
- 6. आधार वर्ग के टेम्पलेट पैरामीटर के रूप में बाल वर्ग का उपयोग करना और घोंसला वाले नाम के रूप में
- 7. सी # - कन्स्ट्रक्टर के संदर्भ में गुजरने वाले पैरामीटर, विधि
- 8. आर - डेटाटेबल कॉलम नामों के रूप में गुजरने वाले चर
- 9. node.js गुजरने वाले चर
- 10. वर्ग घोषणा में एक प्रकार पैरामीटर बाधा के रूप में ही वर्ग का उपयोग करना
- 11. सी # में गुजरने वाले ऐरे पैरामीटर: संदर्भ के आधार पर यह स्पष्ट रूप से क्यों है?
- 12. कंस्ट्रक्टर मूल्यों में गुजरने वाले निन
- 13. लूप-गुजरने वाले पैरामीटर के लिए जावास्क्रिप्ट एकाधिक गतिशील addEventListener
- 14. एक वर्ग जावा में सामान्य विधि के लिए प्रकार पैरामीटर के रूप में प्रकार पैरामीटर के साथ पासिंग
- 15. स्थिर var और गुजरने वाले ऑब्जेक्ट पैरामीटर का उपयोग करने के बीच कौन सा बेहतर है?
- 16. मल्टी-पैरामीटर प्रकार समानार्थी उदाहरण
- 17. प्रमाणीकरण स्थिति गुजरने वाले node.js
- 18. सी ++ वर्ग प्रकार तर्क के रूप में
- 19. नॉकआउटज ने गुजरने वाले पैरामीटर की गणना की
- 20. jquery: होवर() फ़ंक्शन में गुजरने वाले चर?
- 21. जेनेरिक विधि प्रकार पैरामीटर के रूप में
- 22. वैरिएड टेम्पलेटिंग पर निर्भर प्रकार वाले वर्ग
- 23. थ्रेड बनाएं - गुजरने वाले तर्क
- 24. एक्सएसएल: टेम्पलेट्स के बीच गुजरने वाले चर
- 25. ट्रिगर पैरामीटर का निर्माण कर्ल और क्रंब
- 26. क्या किसी प्रकार का वर्ग एक उदाहरण बनाना संभव है यदि उसके प्रकार पैरामीटर गलत क्रम में हैं?
- 27. कम और गुजरने वाले चर में स्ट्रिंग से बचने
- 28. वर्ग निर्माण
- 29. जावा: गैर स्थैतिक घोंसला वाले वर्ग और उदाहरण। सुपरर()
- 30. HttpPostedFileBase (या इसके विरासत प्रकार) का उदाहरण कैसे बनाएं
के लिए एपीआई देखें क्या आप वाकई इसे "करना" चाहते हैं? मैं इसे कभी नहीं करना चाहूंगा। – Dariusz
आपका उपयोग केस क्या है जो इसे मजबूर कर रहा है? – Santosh
कारखाने/कन्स्ट्रक्टर आधारित इंजेक्शन से तत्काल कक्षाओं जैसे वैध उपयोग के मामले हैं। जब तक आप इस तरह के ढांचे को लिख नहीं रहे हैं, तो आप कन्स्ट्रक्टर इंजेक्शन के साथ कक्षा को तुरंत चालू करने के लिए एक डीआई का उपयोग भी कर सकते हैं। –