У меня
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());
}
}
Выход
[email protected]
UPDATE
Я понимаю, что ограничение на загрузку любых классов выражается намеренно, но должно быть разумное объяснение, почему.
Обратите внимание, что пакет private B {} конструктор существует специально. Если я удалю его, я получу
java.lang.IllegalAccessException: класс B не может получить доступ к члену класса A $B с модификаторами "private"