矢量克隆错误

时间:2014-03-11 21:06:46

标签: vector clone

我创建了自己的Vector类QueueExtendingVect,它由CInteger元素组成,其中CInteger是我自己的类。

在我的代码中,我尝试覆盖Object的clone()方法来克隆QueueExtendingVect,但不断收到错误。以下是代码:

public Object clone() {
  super.clone();
  QueueExtendingVect copy = (QueueExtendingVect) this.clone(); 

  for(int i = 0; i < this.size(); i++)
    copy.set(i, (CInteger) this.elementAt(i));
}

CInteger类:

package csu.mcdonald;

public class CInteger implements Cloneable {
  private int i; 

  CInteger(int ii) { i = ii; }

  void setI(int ii) { i = ii; }

  int getI() { return this.i; } 

  public Object clone() { 
          return null; 
  }

  public String toString() { 
      Integer bigI = new Integer(this.i); 
      return bigI.toString(); 
  }

  public boolean equals(Object o) {
      if(this.i == ((CInteger)o).i)
          return true; 
      else
          return false;
  }
}

如何成功克隆载体?谢谢:)

1 个答案:

答案 0 :(得分:0)

这应该足够了

public Object clone() {
 //EDIT     QueueExtendingVect copy = new QueueExtendingVect(this.size());
 QueueExtendingVect copy = new QueueExtendingVect(this.size());

 for(int i = 0; i < this.size(); i++)
  copy.add(elementAt(i));
 return copy;
}

顺便说一句,这不是线程安全的。

编辑:修正了界外问题