2

我想在 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);
4

1 回答 1

1

您可以使用 java 库的 Cloneable,而不是为此提供您自己的接口 Deep。 http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Cloneable.html

大多数java类已经实现了这个接口。比如ArrayList等。

于 2013-04-20T12:10:10.730 回答