浅拷贝:通过clone方法
如果想要使一个类的对象能够调用clone方法 ,则需要实现Cloneable接口, 并重写 clone方法:
深拷贝:利用对象流
将对象序列化,再反序列化得出新的对象. 因此首先需要实现序列化接口,如下:
public class Student implements Serializable{
private static final long serialVersionUID = -2232725257771333130L;
private int sno ;
private String name;
private Teacher teacher; //getter ,setter,toString()省略...
}
工具方法:
//工具方法
public Object cloneObject(Object object) throws IOException, ClassNotFoundException {
//将对象序列化
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
objectOutputStream.writeObject(object);
//将字节反序列化
ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
Object obj = objectInputStream.readObject();
return obj;
}