Istnieją dwa sposoby odwoływania się do instancji klasy w tej klasie. Na przykład:
class Person {
String name;
public void setName(String name) {
this.name = name;
}
public void setName2(String name) {
Person.this.name = name;
}
}
Jeden używa this.name
odniesienia do pola obiektu, a drugi używa className.this
odniesienia do pola obiektu. Jaka jest różnica między tymi dwoma odniesieniami?
Person.this
do innego obiektu.Ta składnia ma znaczenie tylko wtedy, gdy masz zagnieżdżone klasy:
źródło
Musisz tylko użyć className.this dla klas wewnętrznych. Jeśli ich nie używasz, nie martw się o to.
źródło
Class.this
jest przydatne do odwoływania się do nie statycznejOuterClass
.Aby utworzyć wystąpienie niestatycznej
InnerClass
, musisz najpierw utworzyć wystąpienieOuterClass
. W związku z tym niestatycznaInnerClass
zawsze będzie mieć odniesienie do swojego,OuterClass
a wszystkie pola i metodyOuterClass
są dostępne dlaInnerClass
.W tym przykładzie oba
Innerclass
są tworzone z tego samego,Outerclass
dlatego oba mają to samo odwołanie doOuterclass
.źródło