Java - 使用反射获取对静态类的引用

时间:2010-07-28 21:05:00

标签: java reflection class static

在Java中,是否可以使用反射来访问静态类的实例(嵌套)?

假设我在包中定义了以下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
}

它将错误指示无法找到类。可以这样做吗?

2 个答案:

答案 0 :(得分:17)

您是否尝试将嵌套类称为

MyMainClass$SalesObjectGrouper1

嵌套类在内部命名为ContainingClassName $ NestedClassName

答案 1 :(得分:3)

为了避免将Java语言类映射到Java运行时类,您可以使用Class.getDeclaredClasses。使用反射通常是一个错误。处理嵌套类似乎不是一个好兆头。