关于java clone的一个例子

来源:互联网 发布:藏意汉体软件下载 编辑:程序博客网 时间:2024/06/06 15:35

此例子中三个类 comA comB comC

其中 comC继承了 comA

conC中有一个列表其中元素是comB。

我出现的问题是:comB中没有引用接口implements Serializable, Cloneable

导致数据CLONE不到!

正确的如下:

 

 

public class comA implements Serializable, Cloneable {
... ....

 // 深度复制
 public Object clone() {
  comA o = null;
  try {
   o = (comA ) super.clone();
  } catch (CloneNotSupportedException e) {
   e.printStackTrace();
  }
  return o;
 }

}

 

public class comB bimplements Serializable, Cloneable{

... ....
 // 深度复制
 public Object clone() {
  comB o = null;
  try {
   o = (comB ) super.clone();
  } catch (CloneNotSupportedException e) {
   e.printStackTrace();
  }
  return o;
 }
}

public class comC extends comA{

 public ArrayList< comB > panoList = null ;


 // 深度复制
 public Object clone() {
  comC o = null;
  o = (comC ) super.clone();
  
  ArrayList< comB > tPanolist= new  ArrayList< comB >();
  for (int i = 0; i < this.panoList.size(); i++) {
   comB tPoi = new comB ();
   tPoi = (comB ) (this.panoList.get(i).clone());
   tPanolist.add(tPoi);
  }

  o.panoList = tPanolist;
  return o;
 }

}

原创粉丝点击