Come si ottiene un riferimento alla classe che lo racchiude da una classe interna anonima in Java?[duplicare]

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

  •  09-06-2019
  •  | 
  •  

Domanda

Questa domanda ha già una risposta qui:

Attualmente sto creando un riferimento esplicito a questo nella classe esterna in modo da avere un nome a cui fare riferimento nella classe interna anonima.Esiste un modo migliore per farlo?

È stato utile?

Soluzione

L'ho appena trovato di recente.Utilizzo 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'oggetto stesso (invece di invocare membri), allora Outer.this è la strada da percorrere.

Altri suggerimenti

Utilizzo EnclosingClass.this

Puoi comunque utilizzare Outer.class per ottenere la classe dell'oggetto della classe esterna (che restituirà lo stesso oggetto Class di Outer.this.getClass() ma è più efficiente)

Se desideri accedere ai dati statici nella classe che li racchiude, puoi utilizzare Outer.name dove name è il campo o il metodo statico.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top