Ответ 1
Доступ к закрытым членам другого класса несколько усложняется, потому что JVM на самом деле этого не позволяет. В результате компилятор вводит методы доступа, которые делают его несколько медленнее или сложнее трассировка стека.
По этой причине я оставляю его как локальный пакет.
BTW Конструктор abstract class
не должен быть public
. Это может быть также protected
или локальный пакет
private static class A {
private A() {
throw new Error();
}
}
public static void main(String... ignored) {
new A();
}
печатает дополнительный элемент трассировки стека.
Exception in thread "main" java.lang.Error
at Main$A.<init>(Main.java:8)
at Main$A.<init>(Main.java:6)
at Main.main(Main.java:12)
Сделать пакет конструктора локальным, а второй - исчезнуть.