用原型实例指定创建对象的种类,通过拷贝创建新的对象Object类提供了一个clone()方法,可以将java对象复制一份,但是这个类需要实现cloneable接口,才能具备这种能力。
public class ProtoType implements Cloneable{
private Integer aid;
private String name;
public Integer getAid() {
return aid;
}
public void setAid(Integer aid) {
this.aid = aid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "ProtoType{" +
"aid=" + aid +
", name='" + name + ''' +
'}';
}
@Override
protected Object clone() {
ProtoType protoType = null;
try {
protoType = (ProtoType) super.clone();
}catch (CloneNotSupportedException e){
e.printStackTrace();
}
return protoType;
}
}
class MainClass{
public static void main(String[] args) {
ProtoType protoType = new ProtoType();
protoType.setAid(1);
protoType.setName("aaa");
ProtoType protoType1 =(ProtoType) protoType.clone();
}
}
spring中可以设置Bean的形式,是单例的还是原型的。
浅拷贝与深拷贝浅拷贝: 对于数据类型是基本数据类型的会进行浅拷贝,会直接进行值传递。对于引用数据类型的成员变量,会将对象的引用复制给新的成员变量
深拷贝: 复制对象所有的基本数据类型的成员变量值,为所有引用数据类型申请内存空间,并复制成新的引用数据变量。
浅拷贝通过重写clone实现,深拷贝通过对象序列化实现。



