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

9
在Java中,是否可以使用反射访问静态类(嵌套)的实例?
假设我在包“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
}

如果找不到类,它会出现错误提示。这能做到吗?


顺便提一下,使用 Class.forName() 不会使用反射。 - stacker
2个回答

19

你是否尝试将嵌套类称为

MyMainClass$SalesObjectGrouper1

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


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接