Es gibt zwei Möglichkeiten, auf die Instanz einer Klasse innerhalb dieser Klasse zu verweisen. Beispielsweise:
class Person {
String name;
public void setName(String name) {
this.name = name;
}
public void setName2(String name) {
Person.this.name = name;
}
}
Einer verwendet, this.name
um auf das Objektfeld zu verweisen, der andere verwendet, className.this
um auf das Objektfeld zu verweisen. Was ist der Unterschied zwischen diesen beiden Referenzen?
Person.this
anderes Objekt verweisen müssen .Diese Syntax wird nur relevant, wenn Sie verschachtelte Klassen haben:
quelle
Sie müssen className.this nur für innere Klassen verwenden. Wenn Sie sie nicht verwenden, machen Sie sich darüber keine Sorgen.
quelle
Class.this
ist nützlich, um auf eine nicht statische zu verweisenOuterClass
.Um einen Nichtstatiker zu instanziieren
InnerClass
, müssen Sie zuerst den instanziierenOuterClass
. Daher wird ein NichtstatikerInnerClass
immer einen Bezug zu seinem habenOuterClass
und alle Felder und Methoden vonOuterClass
stehen dem zur VerfügungInnerClass
.In diesem Beispiel werden beide
Innerclass
vom selben instanziiert,Outerclass
daher haben beide den gleichen Verweis auf dasOuterclass
.quelle