escopo do construtor privado na classe aninhada
Isso é mais umenigma do que pergunta. Eu tenho o seguinte código:
public class PrivateBaseConstructor {
public static class BaseClass {
private BaseClass() {
}
}
public static class DerivedClass extends BaseClass {
public DerivedClass() {
super(); // 1*
}
}
}
Aqui a chamada parasuper();
em 1 * é permitido evento embora o construtor de classe base éprivate
. Se nós escrevermos as classes como classes separadas no mesmo pacote:
BClass.java
public class BClass {
private BClass() {
}
}
DClass.java
public class DClass extends BClass {
public DClass() {
super(); // 2*
}
O compilador corretamente dá erro em 2 *, pois o construtor da classe base não é visível.
Por que o compilador não lança um erro no meu primeiro cenário quando ambas as classes são declaradas estáticas dentro de uma classe?