下是合法的(據我所知):OuterClass.this.someMethod()背後的基本原理是什麼?
class Outer {
void someMethod() {
// do something
}
class Inner {
void innerMethod() {
Outer.this.someMethod();
}
}
}
雖然我明白髮生了什麼,結果是什麼,我不明白爲什麼這是好的。
我最常被外部類的實例如何通過靜態成員語法訪問困惑:Outer.this
不應該this
,對特定的外部實例的引用是任何東西但是靜態的?語法是一樣的,但功能是不同的,或者是某種外部的靜態字段?
換言之,該代碼使用Class.field
語法訪問外部類的實例,該語法我總是與靜態成員相關聯。但是,如果它是一個類的特定實例,它怎麼能是靜態的?通過這個邏輯,Outer的另一個實例將從Object.this
返回一個不同的Outer對象......這不是靜態的......我的腦子受傷了。