son - ¿Cómo se obtiene una referencia a la clase adjunta de una clase interna anónima en Java?
que es una interfaz interna (3)
Todavía puede usar Outer.class para obtener la clase del objeto de la clase externa (que devolverá el mismo objeto Class como Outer.this.getClass () pero es más eficiente)
Si desea acceder a estática en la clase adjunta, puede usar Outer.name donde name es el campo o método estático.
Esta pregunta ya tiene una respuesta aquí:
Actualmente estoy creando una referencia explícita a esto en la clase externa para que tenga un nombre al que hacer referencia en la clase interna anónima. ¿Hay una mejor manera de hacer esto?
Utilice EnclosingClass.this
Acabo de encontrar esto recientemente. Use 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.