定义 以某对象为原型 复制出的新对象
package Yuanxing02; import java.util.Date; // 实现一个接口 重写一个方法 Cloneable // 原型 public class Vedio implements Cloneable { private String name; private Date createTime; @Override protected Object clone() throws CloneNotSupportedException { return super.clone();; } public Vedio() { } public Vedio(String name, Date createTime) { super(); this.name = name; this.createTime = createTime; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } @Override public String toString() { return "Vedio [name=" + name + ", createTime=" + createTime + "]"; } }Vedio.java
package Yuanxing02; import java.util.Date; // 实现一个接口 重写一个方法 Cloneable // 原型 public class Vedio implements Cloneable { private String name; private Date createTime; @Override protected Object clone() throws CloneNotSupportedException { Object obj = super.clone(); Vedio v = (Vedio)obj; // 将对象的属性也进行克隆(深克隆) v.createTime = (Date)this.createTime.clone(); return obj; } public Vedio() { } public Vedio(String name, Date createTime) { super(); this.name = name; this.createTime = createTime; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } @Override public String toString() { return "Vedio [name=" + name + ", createTime=" + createTime + "]"; } }以上代码会出现 两个vedio 同时引用一个date 地址 我改了vedio1的时间后 vedio2的时间也会改变 由于是浅拷贝(拷贝的是引用的地址) 一下进行修改
package Yuanxing02; import java.util.Date; // 实现一个接口 重写一个方法 Cloneable // 原型 public class Vedio implements Cloneable { private String name; private Date createTime; @Override protected Object clone() throws CloneNotSupportedException { Object obj = super.clone(); Vedio v = (Vedio)obj; // 将对象的属性也进行克隆(深克隆) v.createTime = (Date)this.createTime.clone(); return obj; } public Vedio() { } public Vedio(String name, Date createTime) { super(); this.name = name; this.createTime = createTime; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } @Override public String toString() { return "Vedio [name=" + name + ", createTime=" + createTime + "]"; } }