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 }
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top