我見過的Java代碼,說是這樣的:使用「this」和「一流」爲成員的
SomeClass.this.someMethod(someArg);
Blah(AnotherClass.class);
Blah(YAClass.this);
什麼是「本」和「階級」的意思是在這裏嗎?我習慣將它們當作關鍵字來引用當前對象並定義一個類,但這是不同的。我的Java書籍和在線搜索沒有得到任何解釋。
我見過的Java代碼,說是這樣的:使用「this」和「一流」爲成員的
SomeClass.this.someMethod(someArg);
Blah(AnotherClass.class);
Blah(YAClass.this);
什麼是「本」和「階級」的意思是在這裏嗎?我習慣將它們當作關鍵字來引用當前對象並定義一個類,但這是不同的。我的Java書籍和在線搜索沒有得到任何解釋。
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中引入的。
.class
指對應於您的實例類的Class
對象。 Java在每個引用類型的內存中保留一個Class
。
這裏是Class
的Javadoc:http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html
我見過SomeClass.this
使用的唯一時間是當你正在處理嵌套類,並需要從內部類是指對外部類的實例。見這裏的一個例子:http://juixe.com/techknow/index.php/2009/04/07/java-nested-inner-class-this/
.class
語法是指Class類的特定實例。
.this
語法通常用於從內部類中引用頂級類的封閉實例。如果在內部類中只使用了this
,它將引用內部類的實例,而不是包含的類。
一個簡單的例子爲內部類,完成其他答案:
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();
}
});
}
}