2011-10-24 28 views
26

cómo puedo acceder a la clase externa super de una clase interna?acceso clase externa "super" de clase interna en Java

estoy sustituir un método para hacer que se ejecute en un subproceso diferente. Desde un hilo en línea, tengo que llamar al método original, pero por supuesto sólo llamar method() se convertiría en un bucle infinito.

Específicamente, les extiendo BufferedReader:

public WaitingBufferedReader(InputStreamReader in, long waitingTime) 
{ 
    [..] 
    @Override 
    public String readLine() 
    { 
     Thread t= new Thread(){ 
      public void run() 
      { 
       try { setMessage(WaitingBufferedReader.super.readLine()); } catch (IOException ex) { } 
      } 
     }; 

      t.start(); 
      [..] 
    } 
} 

esto en alguna parte me da una NullPointerException no soy capaz de encontrar.

Gracias.

Respuesta

71

De esta manera:

class Outer { 
    class Inner { 
     void myMethod() { 
      // This will print "Blah", from the Outer class' toString() method 
      System.out.println(Outer.this.toString()); 

      // This will call Object.toString() on the Outer class' instance 
      // That's probably what you need 
      System.out.println(Outer.super.toString()); 
     } 
    } 

    @Override 
    public String toString() { 
     return "Blah"; 
    } 

    public static void main(String[] args) { 
     new Outer().new Inner().myMethod(); 
    } 
} 

la prueba anterior, cuando se ejecuta, muestra:

Blah 
[email protected] 
Cuestiones relacionadas