2011-06-07 63 views
1

問題是一個明顯的錯誤。刪除。獲取匿名或內部類的超類

+5

的Runnable是一個接口,而不是一類,可能有很多,請嘗試使用線程相同。 – MByD 2011-06-07 21:39:33

+0

'getInterfaces()[0]'確實給出了'java.lang.Runnable'。 – BalusC 2011-06-07 21:44:25

+2

等等..看看誰應該睡覺.. – Bozho 2011-06-07 21:44:58

回答

4

對於這種情況,Runnable是可以通過getInterfaces獲取的接口。如果匿名類擴展基類getSuperclass()應該可以正常工作。

+0

。當然,顯然是 – Bozho 2011-06-07 21:46:03

1

超級類java.lang.Object。所有對象默認擴展爲Object

Runnable是一個接口。無論調用的主題(普通類,內部類,匿名內部類)如何,您都不會在實現層次結構中看到它。

你能解釋爲什麼你認爲Runnable應該在實現層次結構中可見嗎?

1

Runnable是一個接口,而不是一個類。對於實現Runnable(或其他接口)的實際類,您將得到相同的結果,並且不會擴展任何類。

下面的代碼將打印class java.lang.Thread

 Thread r = new Thread() { 
     @Override 
     public void run() { 
      System.out.println(this.getClass().getSuperclass()); 
     } 
    }; 
    r.start(); 
+0

。 – Bozho 2011-06-07 21:45:54