Java中克隆对象序列化的详细说明
来源:爱站网时间:2020-10-02编辑:网友分享
Java序列化想要允许您将对象的状态写入字节流,并从其他地方读取字节流中的数据,并重构相同的对象,相信有一定的难度,爱站技术频道小编主要给大家介绍了Java中克隆对象序列化的详细说明,大家可以借鉴一下。
Java序列化想要允许您将对象的状态写入字节流,并从其他地方读取字节流中的数据,并重构相同的对象,相信有一定的难度,爱站技术频道小编主要给大家介绍了Java中克隆对象序列化的详细说明,大家可以借鉴一下。
简述:
用字节流的方式,复制Java对象
代码:
流克隆复制函数
public static Object deepClone(Object obj){ if(obj == null){ return null; } try { ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); Object cloneObj = null; ObjectOutputStream out = new ObjectOutputStream(byteOut); out.writeObject(obj); ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); ObjectInputStream in = new ObjectInputStream(byteIn); cloneObj = in.readObject(); return cloneObj; } catch (Exception e) { throw new RuntimeException(e); } }
ObjectClone.java
package test; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class ObjectClone { /** * 测试对象 */ private static class Person implements Serializable { private String name; private int age; Person(String name, int age){ this.name = name; this.age = age; } @Override public String toString() { return String.format("name: %s\nage: %s", name, age); } } /** * 测试函数 */ public static void main(String[] args) { Person person = new Person("Henry", 22); Person newPerson = (Person)ObjectClone.deepClone(person); System.out.println(newPerson); } /** * 工具类 * * @param obj * @return */ public static Object deepClone(Object obj){ if(obj == null){ return null; } try { ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); Object cloneObj = null; ObjectOutputStream out = new ObjectOutputStream(byteOut); out.writeObject(obj); ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); ObjectInputStream in = new ObjectInputStream(byteIn); cloneObj = in.readObject(); return cloneObj; } catch (Exception e) { throw new RuntimeException(e); } } }
测试结果:
看完爱站技术频道的介绍,大家对Java中克隆对象序列化的详细说明都有了一定的了解了吧,希望大家能继续支持js.aizhan.com。
下一篇:Java生成JSON字符串的方法