¿Cómo se obtiene una referencia a la clase adjunta de una clase interna anónima en Java?[duplicar]
Pregunta
Esta pregunta ya tiene respuesta aquí:
Actualmente estoy creando una referencia explícita a esto en la clase externa para tener un nombre al que referirme en la clase interna anónima.¿Hay una mejor manera de hacer esto?
Solución
Encontré esto recientemente.Usar OuterClassName.this
.
class Outer {
void foo() {
new Thread() {
public void run() {
Outer.this.bar();
}
}.start();
}
void bar() {
System.out.println("BAR!");
}
}
Actualizado Si solo desea el objeto en sí (en lugar de invocar miembros), entonces Outer.this
es el camino a seguir.
Otros consejos
Usar EnclosingClass.this
Aún puedes usar Outer.class para obtener la clase del objeto de clase externa (que devolverá el mismo objeto Class que Outer.this.getClass() pero es más eficiente)
Si desea acceder a la estática en la clase adjunta, puede usar Outer.name donde nombre es el campo o método estático.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow