用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
也不需要知道任何创建的细节
浅复制
对于对象中的基本对象类型,外加String,都可以完美的复制,但对于对象或集合,就不能复制了,只会复制对象的引用更改原型的对象数据,后面复制的也会被随之更改。
//浅复制
public class Users implements Cloneable {
private String username;
private int age;
//getter和setter略
public Users clone(){
Users user = null;
try {
user = (Users) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
System.out.println("复制失败!");
}
return user;
}
}
深复制
可以利用序列化,进行深层次复制
前提是,里面的对象和集合对象需要序列化
public class Userss implements Serializable {
private String username;
private int age;
private List<Usersss> usersssList;
//getter和setter略
public Userss deepclone() throws Exception{
//将对象写入流
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(this);
//取出对象
ByteArrayInputStream bai = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bai);
return (Userss)ois.readObject();
}
}
2107

被折叠的 条评论
为什么被折叠?



