¿Cómo se obtiene una referencia a la clase adjunta de una clase interna anónima en Java?[duplicar]

StackOverflow https://stackoverflow.com/questions/31201

  •  09-06-2019
  •  | 
  •  

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?

¿Fue útil?

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
scroll top