使用Java这个关键字

时间:2010-11-20 14:28:11

标签: java this

在类构造函数中,我正在尝试使用:

if(theObject != null)
    this = theObject; 

我搜索数据库,如果记录存在,我使用Hibernate Query生成的theObject

为什么我不能使用this

5 个答案:

答案 0 :(得分:17)

这是因为'this'不是变量。它指的是当前的参考。如果你被允许重新分配'this',它将不再是'this',它将变成'那'。你不能这样做。

答案 1 :(得分:5)

this不是变量,而是值。您不能将this作为表达式中的左值。

答案 2 :(得分:3)

因为您无法分配到this

this表示当前对象实例,即您自己。您可以将this视为对其代码当前正在执行的对象实例的不可变引用。

答案 3 :(得分:1)

“this”指的是你的方法被调用的对象实例。

答案 4 :(得分:1)

这个关键字保存当前对象的引用。让我们举个例子来理解它。

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;
    }
}

在上面的示例中,有一个类名ThisKeywordExample,它由两个实例数据成员a和b组成。 有一个add方法,首先将数字设置为a和b然后返回addtion。

实例数据成员在我们创建该类的对象并且由refrence变量加入时占用内存 我们持有该对象的参考。在上面的例子中,我们在main方法中创建了类的对象并保持 将该对象引入tke引用变量。当我们调用add方法时如何在add方法中访问a和b 因为add方法没有对象的参考。这个问题的答案清楚了这个关键字的概念

上面的代码被JVM视为

    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;
    }
}

上述更改由JVM完成,因此它会自动将另一个参数(对象引用)传递给方法和 将它保存到refrence变量this中,并访问该对象的实例成员抛出此变量。

上面的更改是由JVM完成的,如果你要编译代码然后有编译错误,因为你不得不在那里做任何事情。所有 这由JVM处理。