这是一个在Java 1.5中测试的示例程序。当反射地访问内部类时出现异常
我想知道为什么下面两种方法有不同的结果。它是一个错误还是一种Java特性?
package test;
public class TestOut {
public static void main(String[] args) {
// works
new TestIn();
// throws IllegalAccessException
Class.forName("test.TestOut$TestIn").newInstance();
}
private static class TestIn {
}
}
虽然是'private',但即使它是'private',显示效果如何呢? – polygenelubricants 2010-05-26 05:20:36
我认为是因为反射消除了上下文,而上下文是内部类属于外部。 Class对象本身保留对封闭类的引用,但构造函数不包含。 Bozho 3x, – Bozho 2010-05-26 05:30:19
。 “情境”是我真正想知道的。恕我直言,构造函数应该有足够的信息来了解enclsong类,并且似乎没有理由以这种方式实现它。 – MikeJiang 2010-05-26 05:48:40