2011-06-07 21 views
1

質問は明らかな間違いでした。削除する。匿名または内部クラスのスーパークラスを取得

+5

のRunnableインタフェースは、ないクラスであるスレッドと同じことをしてみてください。

次のコードは、class java.lang.Threadを印刷します。 – MByD

+0

'getInterfaces()[0]' java.lang.Runnable'を返します。 – BalusC

+2

blah ..誰が寝るべきかを見てください。 – Bozho

答えて

4

この場合、RunnableはgetInterfacesで取得できるインターフェイスです。匿名クラスがベースクラスを拡張する場合、getSuperclass()はうまく動作するはずです。

+0

。もちろん、明らかに – Bozho

1

スーパークラスは、java.lang.Objectです。すべてのオブジェクトはデフォルトでObjectに拡張されています。

Runnableはインターフェイスです。呼び出しの主題(通常のクラス、内部クラス、匿名の内部クラス)に関係なく、実装階層では表示されません。

実装階層でRunnableが表示されるべき理由を説明できますか?

1

Runnableはクラスではなくインターフェースです。 Runnable(または他のインタフェース)を実装し、クラスを拡張しない実際のクラスに対しても同じ結果が得られます。 、多くのがあるかもしれない、

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

です。 – Bozho

関連する問題