使用串行化进行ArrayList的深拷贝
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class DeepCopy {
public static void main(String[] args) throws Exception {
List<Student> list = new ArrayList<Student>();
list.add(new Student("jiba"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(list);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
@SuppressWarnings("unchecked")
List<Student> list2 = (List<Student>) ois.readObject();
list2.get(0).setName("sb");
System.out.println(list);
System.out.println(list2);
}
}
class Student implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
public Student(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student [name=" + name + "]";
}
}