Использование OuterClass.this.x
; OuterClass.this
ссылается на родительский объект (от которого генерируется объект InnerClass
).
Рассмотрим следующий осеняющее пример размещен в официальном руководстве Oracle:
public class ShadowTest {
public int x = 0;
class FirstLevel {
public int x = 1;
void methodInFirstLevel(int x) {
System.out.println("x = " + x);
System.out.println("this.x = " + this.x);
System.out.println("ShadowTest.this.x = " + ShadowTest.this.x);
}
}
public static void main(String... args) {
ShadowTest st = new ShadowTest();
ShadowTest.FirstLevel fl = st.new FirstLevel();
fl.methodInFirstLevel(23);
}
}
с выходом
x = 23
this.x = 1
ShadowTest.this.x = 0
x = 23
относится к локальной переменной метода void methodInFirstLevel()
, this.x = 1
относится к общественной сфере x
FirstLevel
внутренний класс и ShadowTest.this.x = 0
относится к общему полю x
из ShadowTest
внешний класс.
OuterClass.this.x и OuterClass.this.y. OuterClass.this ссылается на внешний класс. –