我知道这个问题在一个明显的答案中看起来有点微不足道,但我无法找到任何解释,也无法在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
分配对执行方法的当前对象的引用说实话,我在这里感到困惑的是这行代码:
MyObject obj = this;
这是我第一次找到没有变量/方法名称的this
,用于简单地引用一个对象。
我说得对吗?我错过了什么吗?您是否有链接,我可以在其中找到有关this
的类似用途的其他信息?
感谢
答案 0 :(得分:3)
将this
分配给变量没有“错误”。
在您的情况下,这样做会为您的迭代代码设置初始条件。
合理的此类用法可能位于链接列表中,其中根节点为this
:
// find end node, to add another node perhaps
Node node = this;
while (node.next != null)
node = node.next;
答案 1 :(得分:2)
您无法在this
(class
)方法中访问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,
}