Vector 载体克隆错误

Vector 载体克隆错误,vector,clone,Vector,Clone,我创建了自己的向量类QueueExtendingVect,它由CInteger元素组成,其中CInteger是我自己的类 在我的代码中,我试图覆盖对象的clone()方法来克隆QueueExtendingVect,但不断出现错误。代码如下: public Object clone() { super.clone(); QueueExtendingVect copy = (QueueExtendingVect) this.clone(); for(int i = 0; i <

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

在我的代码中,我试图覆盖对象的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));
}

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

这就足够了

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;
}
公共对象克隆(){
//EDIT QueueExtendingVect copy=new QueueExtendingVect(this.size());
QueueExtendingVect copy=新的QueueExtendingVect(this.size());
对于(int i=0;i
顺便说一下,它不是线程安全的


编辑:修复了越界问题

您遇到了哪些错误?另外,公共对象clone(){没有返回任何内容,这是真实代码吗?另外,super.clone()应该分配给“copy”而不是这个。clone()对不起,我应该返回copy。我收到错误“clone()不可见”.我不完全确定这意味着什么。我不知道copy是如何从调用clone()的实例中获取元素的。在我看来,副本中的每个单元格都被设置为该单元格中已有的任何单元格。此外,在此赋值中,QueueExtendingVect没有构造函数将向量初始化为特定大小。copy.set(i,elementAt(i));表示副本的元素被设置为“this”中“i”处的值。我知道您有this.elementAt,但“this”在此上下文中是多余的。如果您愿意,可以使用它。您如何分辨该副本。set(i,elementAt(i));将引用此中的元素?因为没有指定对象的方法调用总是在“this”上。如果它是copy.elementAt,那么它将在“copy”上工作,但因为它不是,所以它在“this”上工作。根据我的经验,“this”对于区分方法变量和同名的类变量是非常必要的方法,但现在我一直得到一个BoundsException数组。我不确定为什么会发生这种情况,因为我从来没有超过这个向量的大小。我如何在这里重新发布代码?
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;
}