Pregunta

Tengo una pequeña duda sobre esta línea:

  

Una clase anónima no puede definir un constructor

A continuación, por lo que también podemos definir una clase anónima con la siguiente sintaxis:

new class-name ( [ argument-list ] ) { class-body }
¿Fue útil?

Solución

No está definiendo un constructor de la clase anónima, en la que llama a un constructor de la superclase.

No se puede agregar un constructor adecuado para la clase anónima, sin embargo, se puede hacer algo similar. A saber, un bloque de inicialización.

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() {

   }

}

Otros consejos

Su ejemplo se crea un anónimo subclase de class-name, y no se les permite crear un constructor específico de su clase anónima. La lista de argumentos que dan es la misma que la lista de argumentos para el constructor class-name.

Esto implica que una clase abstracta existen llamadas class-name con el constructor definido. Usted está haciendo uso de ese constructor en la clase anónima similar al uso de super () en el constructor de una subclase.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top