esta palabra clave contiene la referencia del objeto actual. Tomemos un ejemplo para comprenderlo.
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;
}
}
En el ejemplo anterior no es una ThisKeywordExample nombre de la clase que se componen de miembro de dos datos de instancia a y b. hay un método de agregar que primero establece el número en a y b y luego devuelve la adición.
Los miembros de datos de instancia toman la memoria cuando creamos el objeto de esa clase y se accede por la variable de referencia en que tenemos la referencia de ese objeto. En el ejemplo anterior, creamos el objeto de la clase en el método principal y guardamos la referencia de ese objeto en la variable de referencia. cuando llamamos al método add cómo a y b se accede en el método add porque el método add no tiene la referencia del objeto. La respuesta a esta pregunta borra el concepto de esta palabra clave
el código anterior es tratado por la JVM como
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;
}
}
los cambios anteriores se realizan por la JVM para que pase automáticamente el uno más parámetros (refrence objeto) en el método y mantenerlo en la variable refrence este y accede a la miembro de instancia de ese objeto lanzar esta variable
Los cambios anteriores los realiza JVM si compila código, entonces hay un error de compilación porque no tiene que hacer nada. Todos los son manejados por la JVM.
@skaffman: de la Especificación del lenguaje Java, "la palabra clave' this' denota un ** valor ** que es una referencia al objeto para el que se invocó el método de instancia ". Ver http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.8.3 – AbdullahC