classPersonimplementsCloneable{Stringname;intage;publicPerson(Stringname,intage){this.name=name;this.age=age;}@OverrideprotectedObjectclone()throwsCloneNotSupportedException{returnsuper.clone();}} 这个类使用了Object的默认clone方法,也就是浅拷贝。在调用这个类的clone方法时,仅仅会浅拷贝出一个新的Person对象,...
// 测试代码publicclassMain{publicstaticvoidmain(String[]args){Addressaddress=newAddress("New York");Personperson1=newPerson("John",address);Personperson2=DeepCloneUtil.deepClone(person1);// 修改 person2 的地址person2.getAddress().city="Los Angeles";System.out.println(person1);System.out.print...
protected native Object clone() throws CloneNotSupportedException; 1. 因为每个类直接或间接的父类都是Object,因此它们都含有clone()方法,但是因为该方法是protected,所以都不能在类外进行访问。 要想对一个对象进行复制,就需要对clone方法覆盖。 一般步骤是(浅复制): 1. 被复制的类需要实现Clonenable接口(不实...
Object 类提供的 clone 是只能实现 浅拷贝的。 回到顶部(go to top) 如何实现深拷贝? 深拷贝的原理我们知道了,就是要让原始对象和克隆之后的对象所具有的引用类型属性不是指向同一块堆内存,这里有三种实现思路。 ①、让每个引用类型属性内部都重写clone() 方法 既然引用类型不能实现深拷贝,那么我们将每个引用类型...
因为每个类的直接或间接父类都是Object,因此它们都含有clone()方法,但因该方法是protected修饰的,所以我们不能在类外访问该方法。但如果我们要对一个对象进行复制,可以对clone方法进行复写,而Java中提供了两种不同的克隆方式,浅克隆(ShallowClone)和深克隆(DeepClone)。
例如,使用 ObjectOutputStream 和 ObjectInputStream 实现克隆: 代码语言:java AI代码解释 publicstaticObjectdeepClone(Objectobj)throwsIOException,ClassNotFoundException{ByteArrayOutputStreambos=newByteArrayOutputStream();ObjectOutputStreamoos=newObjectOutputStream(bos);oos.writeObject(obj);oos.close();ByteArrayIn...
如果创建一个对象的新的副本,也就是说他们的初始状态完全一样,但以后可以改变各自的状态,而互不影响,就需要用到java中对象的复制,如原生的clone()方法。 如何进行对象克隆 Object对象有个clone()方法,实现了对象中各个属性的复制,但它的可见范围是protected的,所以实体类使用克隆的前提是: ...
Java 提供了一个Cloneable接口,类通过实现这个接口并重写Object类的clone()方法,可以实现自我复制的能力。根据clone()方法的实现不同,可以做到浅拷贝或深拷贝。但是,这种方式需要手动处理每个需要深拷贝的属性,容易出错且不够灵活。 通过序列化/反序列化 这种方式通过将对象序列化为字节流,然后再从字节流中反序列化出...
MyObject clone = (MyObject) obj.clone(); 需要注意的是,如果原对象的类没有实现Cloneable接口,那么调用clone()方法会抛出CloneNotSupportedException异常。因此,如果需要实现浅克隆,需要在类定义中实现Cloneable接口。深度克隆(Deep Clone):深度克隆是指创建一个新的对象,并将原对象的所有字段值复制到新对象中,包括...
因为每个类的直接或间接父类都是Object,因此它们都含有clone()方法,但因该方法是protected修饰的,所以我们不能在类外访问该方法。但如果我们要对一个对象进行复制,可以对clone方法进行复写,而Java中提供了两种不同的克隆方式,浅克隆(ShallowClone)和深克隆(DeepClone)。