2010-05-11 29 views
98

Ho implementato una classe nidificata in Java e ho bisogno di chiamare il metodo di classe esterno dalla classe interna.Chiamare la funzione di classe esterna dalla classe interna

class Outer { 
    void show() { 
     System.out.println("outter show"); 
    } 

    class Inner{ 
     void show() { 
      System.out.println("inner show"); 
     } 
    } 
} 

Come posso chiamare il metodo showOuter?

+0

Possiamo supporre che la classe interna contiene un'istanza della classe esterna? – Eric

+12

@Eric: in java, un'istanza di una classe interna non statica ALWAYS contiene un'istanza della classe esterna – newacct

+0

@Eric: ciò è sempre vero in una classe interna Java non statica! –

risposta

174

È necessario anteporre la chiamata da parte della classe esterna:

Outer.this.show(); 
+3

Grande. Ho un seguito su questo. Come faccio a chiamare un metodo nella classe esterna da un posto completamente diverso avendo un'istanza di classe interna. Inner myInner = new Outer(). New Inner(); ... per esempio se la classe esterna ha un metodo pubblico getValue(). myInner.getValue() non funziona, myInner.Outer.getValue() non funziona. So che posso farlo con un metodo getOwner in Inner e quindi chiamarlo .. ma ho bisogno di quel metodo? grazie – momomo

+0

Se outer è un'interfaccia, come chiamare il metodo astratto dalla classe interna ..? –

1

Questo dovrebbe fare il trucco:

Outer.Inner obj = new Outer().new Inner(); 
obj.show(); 
Problemi correlati