Existem duas maneiras de referenciar a instância de uma classe dentro dessa classe. Por exemplo:
class Person {
String name;
public void setName(String name) {
this.name = name;
}
public void setName2(String name) {
Person.this.name = name;
}
}
Um usa this.name
para referenciar o campo do objeto, mas o outro usa className.this
para referenciar o campo do objeto. Qual é a diferença entre essas duas referências?
Person.this
a outro objeto.Essa sintaxe só se torna relevante quando você aninha classes:
fonte
Você só precisa usar className.this para classes internas. Se você não estiver usando, não se preocupe.
fonte
Class.this
é útil referenciar um não estáticoOuterClass
.Para instanciar um não estático
InnerClass
, você deve primeiro instanciar oOuterClass
. Portanto, um não estáticoInnerClass
sempre terá uma referência a eleOuterClass
e a todos os campos e métodos deOuterClass
está disponível para oInnerClass
.Neste exemplo, ambos
Innerclass
são instanciados a partir do mesmo,Outerclass
portanto, ambos têm a mesma referência aoOuterclass
.fonte