2010-01-15 48 views
4

我見過的Java代碼,說是這樣的:使用「this」和「一流」爲成員的

SomeClass.this.someMethod(someArg); 
Blah(AnotherClass.class); 
Blah(YAClass.this); 

什麼是「本」和「階級」的意思是在這裏嗎?我習慣將它們當作關鍵字來引用當前對象並定義一個類,但這是不同的。我的Java書籍和在線搜索沒有得到任何解釋。

回答

7

SomeClass.this/YAClass.this - 一個內部類包圍SomeClass/YAClass類的this參考。

class SomeClass { 
    private InnerClass { 
     public void foo() { 
      SomeClass outerThis = SomeClass.this; 
      [...] 
     } 
    } 
} 

(你必須要非常小心,可以適用於任何Object參考操作打交道時,你會得到哪些this特別是一種常見的情況是在內部類上this syncronising,當代碼應同步在外部實例(在這種情況下更好的方法是使用明確的鎖定對象)。)

AnotherClass.class - 類的java.lang.Class對象。在Java 1.5之前,這是使用Class.forName(初始化類)實現的;從1.5開始,ldc字節碼已被擴展爲直接支持。

Class<AnotherClass> clazz = AnotherClass.class; 

兩者都是在Java 1.1中引入的。

1

.class語法是指Class類的特定實例。

.this語法通常用於從內部類中引用頂級類的封閉實例。如果在內部類中只使用了this,它將引用內部類的實例,而不是包含的類。

3

一個簡單的例子爲內部類,完成其他答案:

class SomeClass { 
    public void someMethod() { 
      System.out.println("Hello, I have someMethod"); 
    } 
    public void otherMethod() { 
      addListener(new MyListener() { 
       public void someMethod() { 
        System.out.println("I too, have someMethod"); 
       } 
       public void listen() { 
        // I will call someMethod of SomeClass: 
        SomeClass.this.someMethod(); 
       } 
      }); 
    } 
} 
相關問題