Есть два способа ссылаться на экземпляр класса внутри этого класса. Например:
class Person {
String name;
public void setName(String name) {
this.name = name;
}
public void setName2(String name) {
Person.this.name = name;
}
}
Один используется this.name
для ссылки на поле объекта, а другой - className.this
для ссылки на поле объекта. В чем разница между этими двумя ссылками?
Person.this
на другой объект.Этот синтаксис становится актуальным только тогда, когда у вас есть вложенные классы:
источник
Вам нужно использовать только className.this для внутренних классов. Если вы их не используете, не беспокойтесь об этом.
источник
Class.this
полезно ссылаться на нестатическийOuterClass
.Чтобы создать нестатический экземпляр
InnerClass
, сначала необходимо создать экземплярOuterClass
. Следовательно, нестатический объектInnerClass
всегда будет иметь ссылку на него,OuterClass
и все поля и методыOuterClass
доступны дляInnerClass
.В этом примере оба
Innerclass
экземпляра созданы из одногоOuterclass
и того же, поэтому оба имеют одинаковую ссылку наOuterclass
.источник