क्या कोई परिस्थिति है जिसमें Class.getDeclaringClass
Class.getEnclosingClass
से भिन्न परिणाम दे सकता है?वर्ग बनाम कक्षा
मैंने सोचा कि यह बाहरी कक्षा एक आंतरिक वर्ग कि स्थिर के रूप में घोषित नहीं किया गया था instantiating के उपवर्ग से कोई लेना देना हो सकता है, लेकिन मैं एक अंतर यह है कि जिस तरह से प्राप्त करने में सक्षम नहीं था:
public class Main {
private static class StaticInnerClass {
}
private class MemberInnerClass {
}
private static class ChildClass extends Main {
}
public MemberInnerClass getMemberInnerClassInstance() {
return new MemberInnerClass();
}
public static void main(String[] args) {
System.out.println(StaticInnerClass.class.getDeclaringClass());
System.out.println(StaticInnerClass.class.getEnclosingClass());
System.out.println(MemberInnerClass.class.getDeclaringClass());
System.out.println(MemberInnerClass.class.getEnclosingClass());
System.out.println(new ChildClass().getMemberInnerClassInstance().getClass().getEnclosingClass());
System.out.println(new ChildClass().getMemberInnerClassInstance().getClass().getDeclaringClass());
}
}
आउटपुट :
class Main
class Main
class Main
class Main
class Main
class Main
क्या उद्देश्य है ? – MartinL
@ मार्टिनएल: मेरे पास एक वर्ग 'एक्स' है जो मेरे उदाहरण की शब्दावली में' सदस्य इंटर्न क्लास 'घोषित करता है। मेरे पास 'X' की बड़ी संख्या में उप-वर्ग भी हैं। मुझे यह निर्धारित करने की संभावित आवश्यकता थी कि' एक्स 'सदस्यइनर क्लास' के दिए गए उदाहरण के लिए शामिल था; मैंने काम किया है इस समय चारों ओर एड करें लेकिन बनाम संलग्न वर्ग घोषित करने के बारे में उत्सुक था। – OpenSauce