A thispalavra-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 thispara 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 xa 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 thiscomo 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 thispara 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 thisusado 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.