1. 2. 代码示例和解释: int[]originalArray={1,2,3,4,5};// 创建原始数组int[]clonedArray=originalArray.clone();// 创建克隆数组,使用clone()方法进行深克隆originalArray[0]=10;// 修改原始数组System.out.println(Arrays.toString(originalArray));// 打印原始数组System.out.println(Arrays.toString(cl...
int[] y) {6this.x =x;7this.y =y;8}910publicintgetX() {11returnx;12}1314publicint[] getY() {15returny;16}1718@Override19publicMyClass clone()throwsCloneNotSupportedException {20MyClass clone = (MyClass)super.clone();21//Deep clone the y array22clone.y =y.clone();23return...
一、浅克隆(ShallowClone)和深克隆(DeepClone) 二、序列化和反序列化实现深克隆 三、封装序列化和反序列化操作 ObjectOutputStream + 内存流ByteArrayOutputStream 四、对象持久化到文件或从文件中读取对象 ObjectOutputStream + FileOutputStream 一、浅克隆(ShallowClone)和深克隆(DeepClone)<=返回目录 1.1、浅克隆...
1、通过重写clone方法来实现深拷贝 与通过重写clone方法实现浅拷贝的基本思路一样,只需要为对象每一层的每一个对象都实现Cloneable接口并重写clone方法,最后在最顶层的类的重写的clone方法中调用所有的clone方法即可实现深拷贝。简单的说就是:每一层的每个对象都进行浅拷贝=深拷贝。 2、通过对象序列化进行深拷...
WeeklyLogdeepClone()throwsIOException,ClassNotFoundException,OptionalDataException{//将对象写入流中 使用了装饰器模式ByteArrayOutputStreambao=newByteArrayOutputStream();ObjectOutputStreamoos=newObjectOutputStream(bao);oos.writeObject(this);//将对象从流中取出ByteArrayInputStreambis=newByteArrayInputStream(bao...
importjava.io.*;publicclassPersonimplementsSerializable{privatestaticfinal long serialVersionUID=1L;// 实现Serializable时通常需要定义serialVersionUIDprivateString name;privateint age;privateAddress address;// 构造方法、getter、setter、toString等方法省略...// 实现深克隆publicPersondeepClone(){try{// 将当前...
public void deepClone() { Mao mao = new Mao("long", "black"); d1.setMao(mao); Dog d3 = d1.clone(); d3.setName("d3"); mao.setChangduan("short"); mao.setColor("red"); System.out.println("d1:" + d1); System.out.println("d3:" + d3); } 3. 打印 d1:Dog [age...
*/publicclassDeepCloneimplements Cloneable,Serializable{privateStringname;privateStringalias;publicDeepClone(Stringname,Stringalias){this.name=name;this.alias=alias;}@OverrideprotectedObjectclone(){returndeepClone();}privateObjectdeepClone(){try{ByteArrayOutputStreambos=newByteArrayOutputStream();ObjectOutput...
public Object deepClone() throws Exception { // 序列化 ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(this); // 反序列化 ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); ...
深拷贝(Deep Copy)和浅拷贝(Shallow Copy)是在克隆(Clone)操作中经常遇到的两个概念,它们描述了克隆操作对于对象内部引用的处理方式。 浅拷贝(Shallow Copy): 浅拷贝指在克隆操作中,只复制对象本身以及对象内部的基本数据类型的属性,而不复制对象内部的引用类型的属性。