我想将对象存储在对象内部,并且想法是保存它的每个先前条件,以便我可以实现撤消选项。我知道这个问题可以通过列表解决,但我对这个特定的解决方案感兴趣。
我上课了:
public class Condition {
private String name;
private Condition last_condition;
public Condition(String name){
this.name = name;
}
public void changeName(String name){
if(last_condition == null){
last_condition = new Condition(this.name);
this.name = name;
return;
}
while(last_condition != null){
last_condition = last_condition.last_condition;
}
last_condition = new Condition(this.name);
his.name = name;
}
}
我认为问题出在这一部分:
last_condition = last_condition.last_condition;
但我完全不明白为什么。我认为这是由空指针保存在变量中的。因为来自C的人看起来很自然。这只是类的简单表示,我也尝试了一些临时变量,但结果是一样的。
修改 例如,当我将此方法称为4次时,它不会保存所有4个更改。所以没有编译错误,它只是没有正常运行。
欢迎任何帮助!
答案 0 :(得分:0)
你做得比必要的要困难。您不需要遍历所有先前的条件。你所需要的只是
public void changeName(String name){
Condition copy = new Condition(this.name);
copy.lastCondition = this.lastCondition;
this.lastCondition = copy;
this.name = name;
}