Anonimo questione di classe
-
20-09-2019 - |
Domanda
Ho un piccolo dubbio su questa linea:
Una classe anonima non può definire un costruttore
allora, perché possiamo anche definire una classe anonima con la seguente sintassi:
new class-name ( [ argument-list ] ) { class-body }
Soluzione
Non sta definendo un costruttore di classe anonima, che si sta chiamando un costruttore da superclasse.
Non è possibile aggiungere un costruttore adeguato per classe anonima, tuttavia, è possibile fare qualcosa di simile. Ovvero un blocco di inizializzazione.
public class SuperClass {
public SuperClass(String parameter) {
// this is called when anonymous class is created
}
}
// an anonymous class is created and instantiated here
new SuperClass(parameterForSuperClassConstructor) {
{
// this code is executed when object is initialized
// and can be used to do many same things as a constructors
}
private void someMethod() {
}
}
Altri suggerimenti
Il tuo esempio viene creato un anonimo sottoclasse di class-name
, e non sono autorizzati a creare un costruttore specifico per la tua classe anonima. La lista degli argomenti che dai è la stessa della lista di argomenti per il costruttore class-name
.
Ciò implica che una classe astratta esistono chiamate class-name
con il costruttore definito. Si stanno facendo uso di tale costruzione nella classe anonima simile all'uso di super () nel costruttore di una classe secondaria.