• Java-序列化深拷贝对象


    序列化拷贝方法

    @SuppressWarnings("unchecked")
    public static <T extends Serializable> T clone(T obj) {
        T cloneObj = null;
        ObjectOutputStream oos = null;
        ObjectInputStream ois = null;
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            oos = new ObjectOutputStream(baos);
            oos.writeObject(obj);
    
            ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
            ois = new ObjectInputStream(bais);
            cloneObj = (T) ois.readObject();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (oos != null) {
                    oos.close();
                }
                if (ois != null) {
                    ois.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return cloneObj;
    }

    测试

    public class Address implements Serializable {
        private String address;
    public class User implements Serializable {
        private Integer id;
        private String name;
        private Integer age;
        private Address address;
    public static void main(String[] args) {
        Address address = new Address("wuhan");
        User user = new User(1, "asds", 18, address);
    
        User clone = clone(user);
    
        System.out.println(System.identityHashCode(user) + "	" + user);
        System.out.println(System.identityHashCode(clone) + "	" + clone);
    
        user.getAddress().setAddress("beijing");
    
        System.out.println(user.hashCode() + "	" + user);
        System.out.println(clone.hashCode() + "	" + clone);
    }

    需要被拷贝对象实现 Serializable 序列化接口,内部所有的属性也全部要实现序列化接口

  • 相关阅读:
    SQL SERVER 全文索引分词
    Json官方介绍
    SQL Try Catch(转载http://www.cnblogs.com/jimmyray/archive/2011/08/02/2125069.html)
    SQL函数记录
    SQL事务处理代码(SQL Server 2000 & 2005)
    SQL通用分页存储过程
    [导入]SoapExtension 1.0 的问题与解决
    BugTracker.NET 汉化手札
    [导入]我对J2EE和.NET的一点理解
    PostgreSQL 8.0.2 应用报告
  • 原文地址:https://www.cnblogs.com/jhxxb/p/10523040.html
Copyright © 2020-2023  润新知