我有
class A {
private static class B {
B() {
}
}
}
虽然 B 是私有的,但我从另一个类加载 A$B.class 没有问题。为什么允许这样做?
class C {
public static void main(String[] args) throws Exception {
System.out.println(Class.forName("A$B").newInstance());
}
}
输出
A$B@affc70
更新
我知道加载任何类的限制是故意提出的,但必须有一个合理的解释。
请注意,包私有 B{} 构造函数是故意的。如果我删除它,我会得到
java.lang.IllegalAccessException:B 类不能使用修饰符“private”访问 A$B 类的成员