这是对象赋值中的引用

时间:2013-07-14 10:54:28

标签: java this

我知道这个问题在一个明显的答案中看起来有点微不足道,但我无法找到任何解释,也无法在StackOverflow和Google上找到解释。

以下代码:

Object o = this;

是否可以在需要操作的Class方法(属于泛型类的实例方法,而不是静态方法)中使用(让我们说for-loop)对象o在每个方法期间更新它的引用迭代?

再次考虑以下代码,假设我们有一个数组MyObject[] oArr并且otherMethod可用于MyObject:

MyObject obj = this;
for(MyObject f : oArr){
    obj = obj.otherMethod(f);
}

这里发生的事情是:

  • 这用于为obj分配对执行方法的当前对象的引用
  • 一旦分配了引用,我们最终可以在每次迭代期间更新对象o的引用

说实话,我在这里感到困惑的是这行代码:

MyObject obj = this;

这是我第一次找到没有变量/方法名称的this,用于简单地引用一个对象。

我说得对吗?我错过了什么吗?您是否有链接,我可以在其中找到有关this的类似用途的其他信息?
感谢

3 个答案:

答案 0 :(得分:3)

this分配给变量没有“错误”。

在您的情况下,这样做会为您的迭代代码设置初始条件。

合理的此类用法可能位于链接列表中,其中根节点为this

// find end node, to add another node perhaps
Node node = this;
while (node.next != null)
    node = node.next;

答案 1 :(得分:2)

您无法在thisclass)方法中访问static,因为在this方法的上下文中static根本不存在。

编辑后:

但是,this是上下文中当前类的对象。因此,可以将其分配给另一个变量。

答案 2 :(得分:0)

MyObject obj = this;

这也可以用来指向构造函数,所以在这里this用于引用此行在上下文中的类,但引用类应该是相同类型/具有继承关系为了参考,要明确 假设你在AClass

中写下这一行
class AClass {
  MyObject obj= this; // in here you refer the AClass by calling this,
}