Newsgroup: it.comp.java
Titolo: this

Buon giorno,
Cosa si intende con la parola riservata  'this'? In che senso fa riferimento
all'oggetto corrente?
E cosa vuol dire 'oggetto corrente'?
Grazie in anticipo
Paolo

In Java (e in tutti i linguaggi a oggetti) è possibile creare molteplici
instanze di un oggetto con copie delle variabili separate. Il puntatore
"this" serve per accedere (all'interno dell'oggetto) alle variabili riferite
all'oggetto stesso.
Per esempio:
public class Point
{
  private:
int x, y;
public int getX() { return this->x; }
}
Il metodo getX ritorna il valore associato alla variabile x della
particolare istanza dell'oggetto. Ovviamente avendo diversi oggetti this
punterà automaticamente all'istanza corretta.
--
ByEZ,
MindFlavor.
e-Mail: 
mindflav...@hotmail.com
Web site: 
http://web.tiscalinet.it/mindflavor
.

Paolo

all'oggetto stesso.
This non è un puntatore, è un riferimento.
In molti libri si tende a confondere il concetto tra reference e puntatore.
I primi non vanno dereferenziati mentre nei secondi è obbligatorio.


http://www.pabasoftware.com

> riferite all'oggetto stesso.
FF> This non è un puntatore, è un riferimento.
FF> In molti libri si tende a confondere il concetto tra reference e puntatore.
FF> I primi non vanno dereferenziati mentre nei secondi è obbligatorio.
Più che altro la vera differenza è che non puoi accedere all'indirizzo
fisico nè modificarlo, il resto sono cose per facilitare il lavoro del
compilatore.
\begin{echelon}
Semtex South Africa Legion of Doom Noriega Panama Waco, Texas Nazi
Saddam Hussein SEAL Team 6 $400 million in gold bullion North Korea
Delta Force bomb nuclear counter-intelligence
\end{echelon}
\begin{avviso}
 
Attenzione: Leggersi lo header riguardo al mio e-mail!
Warning: read header for infos about my e-mail.
\end{avviso}
+----------------------------------------------------------------+
| Gian Uberto Lauri * "So, are you working on fixing that bug    |
| 
sa...@eng.it
      *  *now* or leaving it until later ?" - YES  |
+----------------------------------------------------------------+

> public int getX() { return this->x; }
TP> Questo e' C! :-)
C++, in C avresti velocemente fatto obj.x :)
\begin{echelon}
$400 million in gold bullion cryptographic Peking assassination
Clinton genetic ammunition munitions BATF DES security Nazi Legion of
Doom SEAL Team 6 explosion


> C++, in C avresti velocemente fatto obj.x :)
In C esistono i puntatori a variabili di tipo struttura e -> è l'unico
operatore che compie la dereferenzazione e la selezione del campo in un
unico colpo.
Questa è una delle caratteristiche che eredita il C++ e che estede anche
per le classi.

compilatore.
Finalmente abbiamo trovato un punto su cui siamo d'accordo.
Posso permettermi il tu?

 }
L'esempio può anche andare bene ... ma non ne hai fatto vedere l'utilità
Se l'unica variabile x è quella globale della classe è inutile sprecarsi le
dita per scrivere this
Una piccola variazione può essere
public int getX(int x)
{
return x -----> restituisce il valore passato alla procedura
}
public int getX(int x)
{
this.return x -----> restituisce la variabile globale della classe
}
L'utilità del this sta proprio nel darti la possibilità di chiamare quelle
variabili che vengono coperte dalla creazione di altre omonime con scope di
livello maggiore