La thisparola chiave viene utilizzata principalmente in tre situazioni. Il primo e più comune è nei metodi setter per chiarire i riferimenti alle variabili. Il secondo è quando è necessario passare l'istanza di classe corrente come argomento a un metodo di un altro oggetto. Il terzo è un modo per chiamare costruttori alternativi all'interno di un costruttore.
Caso 1: utilizzo thisper chiarire i riferimenti alle variabili. Nei metodi setter Java, comunemente passiamo in un argomento con lo stesso nome della variabile membro privata che stiamo tentando di impostare. Quindi assegniamo l'argomento xa this.x. Ciò chiarisce che si sta assegnando il valore del parametro "nome" alla variabile di istanza "nome".
public class Foo
{
private String name;
public void setName(String name) {
this.name = name;
}
}
Caso 2: utilizzo thiscome argomento passato a un altro oggetto.
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: utilizzo thisper chiamare costruttori alternativi. Nei commenti, la trinite indicava correttamente un altro uso comune di this. Quando si hanno più costruttori per una singola classe, è possibile utilizzare this(arg0, arg1, ...)per chiamare un altro costruttore di propria scelta, purché lo si faccia nella prima riga del costruttore.
class Foo
{
public Foo() {
this("Some default value for bar");
//optional other lines
}
public Foo(String bar) {
// Do something with bar
}
}
Ho anche visto thisusato per enfatizzare il fatto che si fa riferimento a una variabile di istanza (senza la necessità di chiarire le ambiguità), ma questo è un caso raro secondo me.