Hay dos formas de hacer referencia a la instancia de una clase dentro de esa clase. Por ejemplo:
class Person {
String name;
public void setName(String name) {
this.name = name;
}
public void setName2(String name) {
Person.this.name = name;
}
}
Uno usa this.name
para hacer referencia al campo de objeto, pero el otro usa className.this
para hacer referencia al campo de objeto. ¿Cuál es la diferencia entre estas dos referencias?
Person.this
a otro objeto.Esta sintaxis solo se vuelve relevante cuando tiene clases anidadas:
fuente
Solo necesita usar className.this para las clases internas. Si no los está utilizando, no se preocupe por eso.
fuente
Class.this
Es útil para hacer referencia a un no estáticoOuterClass
.Para crear una instancia no estática
InnerClass
, primero debe crear una instancia deOuterClass
. Por lo tanto, un no estáticoInnerClass
siempre tendrá una referencia de élOuterClass
y todos los campos y métodos de los queOuterClass
está disponibleInnerClass
.En este ejemplo, ambos
Innerclass
se instancian de la misma,Outerclass
por lo tanto, ambos tienen la misma referencia aOuterclass
.fuente