在类构造函数中,我正在尝试使用:
if(theObject != null)
this = theObject;
我搜索数据库,如果记录存在,我使用Hibernate Query生成的theObject
。
为什么我不能使用this
?
答案 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处理。