Il existe deux façons de référencer l'instance d'une classe dans cette classe. Par exemple:
class Person {
String name;
public void setName(String name) {
this.name = name;
}
public void setName2(String name) {
Person.this.name = name;
}
}
L'un utilise this.name
pour référencer le champ objet, mais l'autre utilise className.this
pour référencer le champ objet. Quelle est la différence entre ces deux références?
Person.this
à un autre objet.Cette syntaxe ne devient pertinente que lorsque vous avez des classes imbriquées:
la source
Vous devez uniquement utiliser className.this pour les classes internes. Si vous ne les utilisez pas, ne vous inquiétez pas.
la source
Class.this
est utile pour référencer un non statiqueOuterClass
.Pour instancier un nonstatic
InnerClass
, vous devez d'abord instancier leOuterClass
. Par conséquent, un non statiqueInnerClass
aura toujours une référence de sonOuterClass
et tous les champs et méthodes deOuterClass
est disponible pour leInnerClass
.Dans cet exemple, les deux
Innerclass
sont instanciés à partir du même, parOuterclass
conséquent, ils ont tous deux la même référence auOuterclass
.la source