नोट: यह एक स्व-उत्तरदायी प्रश्न है। यह एक बहुत ही सरल हो सकता है लेकिन मैंने सोचा कि यह साझा करने लायक होगा।अज्ञात वर्ग के कन्स्ट्रक्टर का एक्सेस संशोधक क्या है?
मान लीजिए मैं एक गुमनाम वर्ग घोषणा की है:
MyObject myObj1 = new MyObject() {
};
जहां MyObject
है:
class MyObject {
public MyObject() { // explicit public constructor
}
...
}
जावा भाषा विशिष्टता (जोर मेरा) की this section से:
एक अनाम कक्षा में स्पष्ट रूप से घोषित कन्स्ट्रक्टर नहीं हो सकता है। इसके बजाय, अज्ञात कन्स्ट्रक्टर को अज्ञात रूप से अज्ञात वर्ग के लिए घोषित किया गया है।
अगर मैं public
कंस्ट्रक्टर्स की संख्या प्राप्त करने की कोशिश:
// Number of public constructors; prints 0
System.out.println(myObj1.getClass().getConstructors().length);
यह शून्य प्रिंट के रूप में उम्मीद है, यानी गुमनाम निर्माता public
नहीं है।
यह भी नहीं private
है, क्योंकि अगर हम एक ही पैकेज में एक अलग कक्षा से निम्न जहां गुमनाम वर्ग (उदाहरण के myObj1
आसपास पारित करके) परिभाषित किया गया है कहते हैं:
myObj1.getClass().getDeclaredConstructor().newInstance();
इसके बिना पूरा करता है एक IllegalAccessException
।
अज्ञात वर्ग में अंतर्निहित कन्स्ट्रक्टर का एक्सेस संशोधक क्या है?
क्या आपने इस जांच को करने के लिए प्रेरित किया? – dnault
@dnault मैं सिर्फ एक अज्ञात वर्ग के (वैचारिक) उपयोग को सिंगलटन के रूप में सोच रहा था और निर्माता के बारे में सोचा था। – manouti
इससे क्या फर्क पड़ता है? आप इसे कॉल नहीं कर सकते – EJP