Come si ottiene un riferimento alla class che racchiude da una class interna anonima in Java?

Attualmente sto creando un riferimento esplicito a questo nella class esterna in modo che io abbia un nome a cui fare riferimento nella class interna anonima. C’è un modo migliore per farlo?

L’ho appena trovato di recente. Usa OuterClassName.this .

 class Outer { void foo() { new Thread() { public void run() { Outer.this.bar(); } }.start(); } void bar() { System.out.println("BAR!"); } } 

Aggiornato Se vuoi solo l’object stesso (invece di invocare membri), allora Outer.this è la strada da percorrere.

Usa EnclosingClass.this

Puoi ancora usare Outer.class per ottenere la class dell’object di class esterno (che restituirà lo stesso object Class di Outer.this.getClass () ma è più efficiente)

Se si desidera accedere alla statica nella class di inclusione, è ansible utilizzare Outer.name dove nome è il campo o il metodo statico.