La this
parola 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 this
per 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 x
a 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 this
come 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 this
per 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 this
usato 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.