A this
palavra-chave é usada principalmente em três situações. O primeiro e mais comum é nos métodos setter para desambiguar referências de variáveis. A segunda é quando há a necessidade de passar a instância atual da classe como argumento para um método de outro objeto. A terceira é uma maneira de chamar construtores alternativos de dentro de um construtor.
Caso 1: Usando this
para desambiguar referências de variáveis. Nos métodos Java setter, geralmente passamos um argumento com o mesmo nome da variável de membro privado que estamos tentando definir. Em seguida, atribuímos o argumento x
a this.x
. Isso deixa claro que você está atribuindo o valor do parâmetro "name" à variável de instância "name".
public class Foo
{
private String name;
public void setName(String name) {
this.name = name;
}
}
Caso 2: usando this
como argumento passado para outro objeto.
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();
}
}
Caso 3: Usando this
para chamar construtores alternativos. Nos comentários, trinithis apontou corretamente outro uso comum de this
. Quando você tem vários construtores para uma única classe, pode this(arg0, arg1, ...)
chamar outro construtor de sua escolha, desde que faça isso na primeira linha do construtor.
class Foo
{
public Foo() {
this("Some default value for bar");
//optional other lines
}
public Foo(String bar) {
// Do something with bar
}
}
Eu também vi this
usado para enfatizar o fato de que uma variável de instância está sendo referenciada (sem a necessidade de desambiguação), mas esse é um caso raro na minha opinião.