questa parola chiave conserva il riferimento dell'oggetto corrente. Facciamo un esempio per capirlo.
class ThisKeywordExample
{
int a;
int b;
public static void main(String[] args)
{
ThisKeywordExample tke=new ThisKeywordExample();
System.out.println(tke.add(10,20));
}
int add(int x,int y)
{
a=x;
b=y;
return a+b;
}
}
Nell'esempio sopra v'è una ThisKeywordExample nome classe che consiste di due membro di dati di istanza ae b. c'è un metodo add, che prima imposta il numero in aeb, quindi restituisce l'addizione.
I membri di dati di istanza prendono la memoria quando si creta l'oggetto di quella classe e sono acceduti dalla variabile di refrenza in che manteniamo il riferimento di quell'oggetto. Nell'esempio sopra abbiamo creato l'oggetto della classe nel metodo principale e manteniamo il refrence di quell'oggetto nella variabile refrence tke. quando chiamiamo il metodo add a come si accede a e b nel metodo add perché il metodo add non ha il refrence dell'oggetto.la risposta di questa domanda chiarisce il concetto di questa parola chiave
il codice di cui sopra è trattato da JVM come
class ThisKeywordExample
{
int a;
int b;
public static void main(String[] args)
{
ThisKeywordExample tke=new ThisKeywordExample();
System.out.println(tke.add(10,20,tke));
}
int add(int x,int y,ThisKeywordExample this)
{
this.a=x;
this.b=y;
return this.a+this.b;
}
}
le modifiche di cui sopra sono eseguite dalla JVM quindi passare automaticamente quella più parametri (refrence oggetto) nel metodo e tenerlo nella variabile refrence questo e accedere al membro di quell'oggetto istanza lancia questa variabile
Le modifiche di cui sopra vengono eseguite da JVM se si compila il codice, quindi non vi è errore di compilazione perché non è necessario fare nulla in questo.Tutto gestito dalla JVM.
fonte
2012-11-28 11:45:01
@skaffman: dalla specifica del linguaggio Java, "la parola chiave' this' denota un ** valore ** che è un riferimento all'oggetto per il quale è stato richiamato il metodo di istanza ". Vedi http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.8.3 – AbdullahC