2010-07-28 40 views
8

का उपयोग कर एक स्थिर वर्ग का संदर्भ प्राप्त करें, क्या प्रतिबिंब का उपयोग करके स्थिर वर्ग (नेस्टेड) ​​के उदाहरण तक पहुंच बनाना संभव है?जावा - जावा में प्रतिबिंब

मान लें कि मैं निम्नलिखित 2 वर्गों पैकेज Package1.SubPackage.SubSubPackage में परिभाषित किया गया है:

public class MyMainClass { 
    public static class SalesObjectGrouper1 { 
     public static final GrouperContext CONTEXT = new GrouperContext("MyDate"); 
    } 

    private static class SalesObjectGrouper2 { 
     public static final GrouperContext CONTEXT = new GrouperContext("MyDate"); 
    } 
} 

अगर मैं निम्नलिखित कोड चलाएँ:

try { 
    xyz = Class.forName("Package1.SubPackage.SubSubPackage.MyMainClass.SalesObjectGrouper1"); 
} catch(ClassNotFoundException ex) { 
    // always hit the error 
} 

यह वर्ग का संकेत त्रुटि होगा नहीं कर सकते पाया जायेगा। क्या यह किया जा सकता है?

+0

कक्षा.forName() का उपयोग कर बीटीडब्ल्यू प्रतिबिंब का उपयोग नहीं करता है। – stacker

उत्तर

16

, आप

के रूप में नेस्टेड वर्ग की चर्चा करते हुए की कोशिश की
MyMainClass$SalesObjectGrouper1 

नेस्टेड कक्षाएं आंतरिक रूप से नाम हैं ContainingClassName $ NestedClassName

3

जावा रनटाइम वर्गों के लिए पर जावा भाषा कक्षाओं की मैपिंग में हैक्स से बचने के लिए क्या आपने Class.getDeclaredClasses का उपयोग कर सकते हैं। प्रतिबिंब का उपयोग अक्सर एक गलती है। नेस्टेड कक्षाओं से निपटना एक अच्छा संकेत प्रतीत नहीं होता है।

संबंधित मुद्दे