克隆的实现方式:
1.实现Cloneable接口并重写Object类中的clone()方法;
package com.example.demo.ee.test;
public class User implements Cloneable{
private String name;
private Integer age;
public User(String name, Integer age) {
super();
this.name = name;
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} @Override
public Object clone() {
Object o = null;
try {
//Object中的clone()识别出你要复制的是哪一个对象
o = (User) super.clone();
} catch (CloneNotSupportedException e) {
System.out.println(e.toString());
}
return o;
}
}
2. 实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆,
深克隆(深复制):
被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。
浅克隆(浅复制):
被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。