同一对象内的对象

时间:2017-04-03 19:13:43

标签: java object

我想将对象存储在对象内部,并且想法是保存它的每个先前条件,以便我可以实现撤消选项。我知道这个问题可以通过列表解决,但我对这个特定的解决方案感兴趣。

我上课了:

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个更改。所以没有编译错误,它只是没有正常运行。

欢迎任何帮助!

1 个答案:

答案 0 :(得分:0)

你做得比必要的要困难。您不需要遍历所有先前的条件。你所需要的只是

public void changeName(String name){
    Condition copy = new Condition(this.name);
    copy.lastCondition = this.lastCondition;
    this.lastCondition = copy;
    this.name = name;
}