Il significato di this in Java

Nel linguaggio Java si usa il riferimento this davanti a un oggetto o una variabile per evitare problemi di ambiguità tra attributi e metodi o costruttori che hanno lo stesso identificativo.
cosa significa THIS in Java

Faccio un esempio pratico.

Questa classe ha un attributo nome

  1. public class Persona {
  2. private String nome;
  3. }

Alla classe aggiungo un metodo setter per cambiare il nome della persona.

Se nel metodo uso una variabile nome con lo stesso identificativo, è evidente che l'assegnazione non può funzionare.

  1. public class Persona {
  2. private String nome;
  3. public void setNome(String nome){
  4. nome=nome;
  5. }
  6. }

Per risolvere il problema nel metodo setNome() potrei usare una variabile locale con identificativo diverso dall'attributo della classe.

Ad esempio, potrei usare nome2 come variabile locale.

  1. public class Persona {
  2. private String nome;
  3. public void setNome(String nome2){
  4. nome=nome2;
  5. }
  6. }

Tuttavia, non è la migliore soluzione possibile perché il codice diventa meno leggibile. Gli identificativi raddoppiano e anche il rischio di sbagliarsi durante lo sviluppo.

Sarebbe meglio usare nel metodo setter lo stesso identificativo della variabile di istanza.

Per farlo, nel metodo setNome() antepongo il riferimento this prima della variabile di istanza nome

  1. public class Persona {
  2. private String nome;
  3. public void setNome(String nome){
  4. this.nome=nome;
  5. }
  6. }

Anche in questo caso gli identificativi della variabile locale e dell'attributo sono gli stessi ma il codice funziona.

Perché?

Quando Java trova il riferimento this davanti alla variabile (this.nome) capisce che mi sto riferendo all'attributo "nome" della classe e non alla variabile locale "nome" del metodo setNome().

E così via

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Le variabili in Java

FAQ