一. 使用序列化流实现
方法
实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆。
实体类 School
package entity;
import java.io.*;
import java.util.List;
public class School implements Serializable {
private List<Student> students;
private String sclNo;
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
public String getSclNo() {
return sclNo;
}
public void setSclNo(String sclNo) {
this.sclNo = sclNo;
}
@Override
public String toString() {
return "School{" +
"students=" + students +
", sclNo='" + sclNo + '\'' +
'}';
}
// 深度复制
public School myClone() {
School school = null;
try {
//创建一块内存来存放对象内容
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream ops = new ObjectOutputStream(bos);
//将对象转换成二进制内容存入到开辟的内存中(序列化)
ops.writeObject(this);
//读取内存块中的二进制内容
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
//将二进制内容转换回对象 反序列化
ObjectInputStream ois = new ObjectInputStream(bis);
try {
school =