外部類名.this.方法名 /屬性 用法理解 ---經常使用在內部類和匿名內部類

今天研究下JDK源代碼,發現tools.jar中javac包下的Mian方法居然有 Main.this..用法,百思不得其解,因而網上查找了資料,編輯了下發下。。。。 java

     有時候,咱們會用到一些內部類和匿名類。當在匿名類中用this時(this.方法名)這個this則指的是匿名類或內部類自己。這時若是咱們要使用外部類的方法和變量的話,則應該加上外部類的類名(外部類名.this.方法名)。以下面這個例子(一些代碼省略了,如異常處理):  
public class Demo{  
        public Demo() {  
        Thread thread = new Thread() {  
              public void run() {  
              Demo.this.run();//調用外部類的run方法,輸出 "外部類" 函數

              System.out.println("內部類");
        };  
     this.run();//調用內部類的run方法,輸出 "外部類 內部類" this

     thread.start();  
}  
   public void run() {  
        System.out.println("外部類");
   }  
}  
在上面這個例子中, thread是一個匿名類對象,在它的定義中,它的run函數裏用到了外部類的run函數。這時因爲函數同名,直接調用就不行了。這時有兩種辦法,一種就是把外部的 run 函數換一個名字,但這種辦法對於一個開發到中途的應用來講是不可取的。那麼就能夠用這個例子中的辦法用 外部類的類名加上this引用來講明要調用的是外部類的方法run。  spa

相關文章
相關標籤/搜索