0

我知道这个问题有一个明显的答案可能看起来有点微不足道,但我找不到任何解释,也找不到 StackOverflow 或谷歌。

以下代码:

Object o = this;

它可以在需要操作(比如说用for循环)对象的类方法(属于通用类的实例方法,而不是静态方法)中使用吗?在每次迭代期间更新其引用?

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

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

这里发生的是:

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

老实说,让我感到困惑的是这行代码:

MyObject obj = this;

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

我做对了吗?这里发生了什么?我错过了什么吗?你有一个链接,我可以在其中找到有关类似用途的其他信息this吗?
谢谢

4

3 回答 3

3

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

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

一个合理的用法可能是在一个链表中,其中根节点是this

// find end node, to add another node perhaps
Node node = this;
while (node.next != null)
    node = node.next;
于 2013-07-14T10:59:50.290 回答
2

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

编辑后:

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

于 2013-07-14T10:57:17.387 回答
0
MyObject obj = this;

this 也可用于指向构造函数,因此 in herethis用于引用该行所在的类,但被引用的类应该是相同的类型/具有继承关系以便引用,要明确假设你把这一行写在AClass

class AClass {
  MyObject obj= this; // in here you refer the AClass by calling this,
}
于 2013-07-14T11:01:30.703 回答