我想知道是否有办法在标题中做到这一点。作为一个例子,我有以下代码:
public List<Shape> path() {
List<Shape> path = new ArrayList<Shape>();
path.add(0, this);
while (this.parent != null) {
path.add(0, this.parent);
this = this.parent;
}
return path;
}
我想找到一种合法的this = this.parent
方式,以便我可以继续将parents
添加到arraylist,直到没有更多的父母为止。有可能吗?
感谢。
答案 0 :(得分:4)
不,这是不可能的。 this
绑定到当前对象,但是没有人阻止您使用其他引用名称,例如currentNode
或您首次初始化为this
(currentNode = this
)的任何引用名称,然后分配父母:currentNode = currentNode.parent
。
答案 1 :(得分:2)
您可以更改this
,
但是你不能让this
指向其他对象,
this
是final
对于您的情况,您可以创建本地参考并对其进行操作
答案 2 :(得分:1)
在this
之前将while
分配给正确类型的变量并使用该变量。
public List<Shape> path() {
List<Shape> path = new ArrayList<Shape>();
path.add(0, this);
SomeVar node = this;
while (node.parent != null) {
path.add(0, node.parent);
node = node.parent;
}
return path;
}