En this
Schlüsselwort wird hauptsächlich in drei Situationen verwendet. Die erste und häufigste ist in Setter-Methoden, um Variablenreferenzen zu disambiguieren. Die zweite ist, wenn die aktuelle Klasseninstanz als Argument an eine Methode eines anderen Objekts übergeben werden soll. Drittens kann man aus einem Konstruktor heraus alternative Konstruktoren aufrufen.
Fall 1: Verwendung von this
um Variablenreferenzen zu disambiguieren. In Java-Setter-Methoden wird in der Regel ein Argument mit demselben Namen wie die private Mitgliedsvariable übergeben, die gesetzt werden soll. Dann weisen wir das Argument x
a this.x
. Dadurch wird deutlich, dass Sie den Wert des Parameters "name" der Instanzvariablen "name" zuweisen.
public class Foo
{
private String name;
public void setName(String name) {
this.name = name;
}
}
Fall 2: Verwendung von this
als Argument an ein anderes Objekt übergeben.
public class Foo
{
public String useBarMethod() {
Bar theBar = new Bar();
return theBar.barMethod(this);
}
public String getName() {
return "Foo";
}
}
public class Bar
{
public void barMethod(Foo obj) {
obj.getName();
}
}
Fall 3: Verwendung von this
um alternative Konstruktoren aufzurufen. In den Kommentaren, trinithis hat zu Recht auf eine weitere häufige Verwendung von this
. Wenn Sie mehrere Konstruktoren für eine einzelne Klasse haben, können Sie this(arg0, arg1, ...)
um einen anderen Konstruktor Ihrer Wahl aufzurufen, sofern Sie dies in der ersten Zeile Ihres Konstruktors tun.
class Foo
{
public Foo() {
this("Some default value for bar");
//optional other lines
}
public Foo(String bar) {
// Do something with bar
}
}
Ich habe auch gesehen this
verwendet, um die Tatsache zu betonen, dass eine Instanzvariable referenziert wird (ohne die Notwendigkeit einer Disambiguierung), aber das ist meiner Meinung nach ein seltener Fall.