我想用Java制作一个泛型列表的深度副本。我该如何改进这段代码呢?
public interface Deep{}
public class Class1() implements Deep{
public Class1(Class1 o){
//implementation of deep copy
}
}
public class Class2() implements Deep{
public Class2(Class2 o){
//implementation of deep copy
}
}在另一个类中实现List的deepCopy:
public List<Deep> deepCopy(List<Deep> inList){
if(inList.get(0) instanceof Class1){
List<Deep> newList=new ArrayList<Class1>();
for (Deep deep : inList)
newList.add(new Class1((Class1) deep));
}
else if(inList.get(0) instanceof Class2){
List<Deep> newList=new ArrayList<Class2>();
for (Deep deep : inList)
newList.add(new Class2((Class2) deep));
}
}这就是调用:
List<Class1> list= new List<Class1>();
//fill list...
List<Class1> aCopy=(List<Class1>) deepCopy(list);发布于 2013-04-20 20:10:11
您可以使用java库的Cloneable,而不是提供自己的接口Deep。http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Cloneable.html
大多数java类已经实现了这个interface.Like、ArrayList等。
https://stackoverflow.com/questions/16120143
复制相似问题