दो तरीके:
विधि 1 - केवल उन वर्गों के लिए जिनके पास नो-आर्ग कंस्ट्रक्टर है
यदि आपकी कक्षा में एक नो-आर्ग कंस्ट्रक्टर है, तो आप एक इंस्टेंस का उपयोग Class
करके एक ऑब्जेक्ट प्राप्त कर सकते हैं Class.forName()
और newInstance()
एक इंस्टेंस बनाने के लिए उपयोग कर सकते हैं (हालांकि सावधान रहें कि इस विधि को अक्सर बुराई माना जाता है क्योंकि यह जावा के चेक किए गए अपवादों को हरा सकता है)।
उदाहरण के लिए:
Class<?> clazz = Class.forName("java.util.Date");
Object date = clazz.newInstance();
विधि 2
एक वैकल्पिक सुरक्षित दृष्टिकोण जो भी काम करता है यदि वर्ग में कोई नो-आर्ग कंस्ट्रक्टर नहीं है, तो अपनी ऑब्जेक्ट को प्राप्त करने के लिए अपनी क्लास ऑब्जेक्ट को क्वेरी करें Constructor
और newInstance()
इस ऑब्जेक्ट पर एक विधि कॉल करें :
Class<?> clazz = Class.forName("com.foo.MyClass");
Constructor<?> constructor = clazz.getConstructor(String.class, Integer.class);
Object instance = constructor.newInstance("stringparam", 42);
दोनों तरीकों को प्रतिबिंब के रूप में जाना जाता है । आपको आमतौर पर विभिन्न अपवादों को पकड़ना होगा जो कि हो सकते हैं, जैसे कि चीजें:
- JVM आपकी कक्षा को लोड नहीं कर सकता है या नहीं कर सकता है
- जिस कक्षा में आप तात्कालिक प्रयास कर रहे हैं, उसके पास सही प्रकार के निर्माता नहीं हैं
- कंस्ट्रक्टर ने खुद एक अपवाद फेंक दिया
- जिस निर्माता को आप आमंत्रित करने का प्रयास कर रहे हैं वह सार्वजनिक नहीं है
- एक सुरक्षा प्रबंधक स्थापित किया गया है और प्रतिबिंब को होने से रोक रहा है