2011-10-24 18 views
26

Jak uzyskać dostęp do klasy zewnętrznej "super z klasy wewnętrznej?Dostęp do klasy zewnętrznej "super" z klasy wewnętrznej w Javie

Nadpisuję metodę, aby uruchomić ją na innym wątku. Z wbudowanego wątku muszę wywołać oryginalną metodę, ale oczywiście po prostu wywołanie method() zamieniłoby się w nieskończoną rekursję.

Konkretnie mam rozszerzenie 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(); 
      [..] 
    } 
} 

to gdzieś daje mi NullPointerException nie jestem w stanie znaleźć.

Dzięki.

Odpowiedz

71

Jak to:

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(); 
    } 
} 

powyższego badania Po wykonaniu wyświetlacze:

Blah 
[email protected] 
Powiązane problemy