2008-08-27 45 views

回答

85

我剛剛發現這個最近。使用OuterClassName.this

class Outer { 
    void foo() { 
     new Thread() { 
      public void run() { 
       Outer.this.bar(); 
      } 
     }.start(); 
    } 
    void bar() { 
     System.out.println("BAR!"); 
    } 
} 

更新如果你只是想對象本身(而不是調用成員),那麼Outer.this是要走的路。

+0

謝謝!這一直困擾着我太久。很高興的答案是快速谷歌搜索了。 – aglassman 2013-06-27 17:57:28

19

使用EnclosingClass.this

1

,您仍然可以使用Outer.class來獲取類的外部類對象(這將返回相同的類對象Outer.this.getClass(),但更高效)

如果你想訪問封閉類中的靜態屬性,可以使用Outer.name,其中name是靜態字段或方法。

相關問題