Supponiamo di avere una classe:Anonimo inizializzazione della classe con il costruttore protetto
public class SomeClass {
protected SomeClass() {
}
}
In MainClass
trova nel pacchetto differente Ho provato ad eseguire due linee:
public static void main(String[] args) {
SomeClass sac1 = new SomeClass();
SomeClass sac2 = new SomeClass() {};
}
A causa di protected
costruttore, in entrambi i casi mi aspettavo che il programma fallisse. Con mia sorpresa, l'inizializzazione anonima ha funzionato bene. Qualcuno potrebbe spiegarmi perché il secondo metodo di inizializzazione è ok?
Con mia grande sorpresa, la stessa cosa accade quando si utilizza un costruttore che ha argomenti. In questo caso penso che la tua spiegazione non sia più valida. – Andrei
@Andrei Non ho menzionato parametri/argomenti. Non svolgono alcun ruolo nel controllo dell'accessibilità. –
Non nel controllo dell'accessibilità, no. Ma se hai una classe con solo un costruttore protetto con parametri, devi invocare esplicitamente il suo costruttore con parametri, dal bambino. Stavo dicendo che questa regola sembra essere saltata per le classi anonime. – Andrei