23种设计模式-原型模式(克隆)
//需要实线Object的cloneable接口
@Data
public class Sheep implements Cloneable{
private String name;
private int age;
public static void main(String[] args) {
Sheep sheep = new Sheep("多里养", 1);
Sheep Sheep1 = null;
try {
Sheep1 = (Sheep) sheep.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
System.out.println("第一个:" +sheep); //第一个:Sheep{name='多里养', age=1}
System.out.println("第二个:" +Sheep1); //第二个:Sheep{name='多里养', age=1}
System.out.println("是否相等: " + (sheep == Sheep1)); //是否相等: false
}
}
深克隆和浅克隆
深:重写clone时,把里面的对象属性也调用clone方法
浅:里面对象不克隆,引用同一个内存地址