在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
}
它将错误指示无法找到类。可以这样做吗?
答案 0 :(得分:17)
您是否尝试将嵌套类称为
MyMainClass$SalesObjectGrouper1
嵌套类在内部命名为ContainingClassName $ NestedClassName
答案 1 :(得分:3)
为了避免将Java语言类映射到Java运行时类,您可以使用Class.getDeclaredClasses
。使用反射通常是一个错误。处理嵌套类似乎不是一个好兆头。