Słowo this
kluczowe jest używane przede wszystkim w trzech sytuacjach. Pierwszą i najczęstszą jest metoda ustawiania w celu ujednoznacznienia odniesień zmiennych. Drugim jest, gdy istnieje potrzeba przekazania bieżącej instancji klasy jako argumentu do metody innego obiektu. Trzeci to sposób na wywołanie alternatywnych konstruktorów z poziomu konstruktora.
Przypadek 1: Użycie this
do ujednoznacznienia odniesień zmiennych. W metodach ustawiających Java zwykle przekazujemy argument o tej samej nazwie co zmienna prywatnego członka, którą próbujemy ustawić. Następnie przypisujemy argument x
do this.x
. To wyjaśnia, że przypisujesz wartość parametru „name” do zmiennej instancji „name”.
public class Foo
{
private String name;
public void setName(String name) {
this.name = name;
}
}
Przypadek 2: Użycie this
jako argumentu przekazanego do innego obiektu.
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();
}
}
Przypadek 3: Używanie this
do wywoływania alternatywnych konstruktorów. W komentarzach Trinithis poprawnie wskazał na inne powszechne zastosowanie this
. Jeśli masz wiele konstruktorów dla jednej klasy, możesz użyć this(arg0, arg1, ...)
wywołania innego wybranego konstruktora, pod warunkiem, że zrobisz to w pierwszym wierszu swojego konstruktora.
class Foo
{
public Foo() {
this("Some default value for bar");
//optional other lines
}
public Foo(String bar) {
// Do something with bar
}
}
Zauważyłem również this
, że podkreślałem fakt, że odwołuje się do zmiennej instancji (bez potrzeby ujednoznacznienia), ale moim zdaniem jest to rzadki przypadek.