cuestión de clase anónima
-
20-09-2019 - |
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 }
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.