zoukankan      html  css  js  c++  java
  • 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 序列化接口,内部所有的属性也全部要实现序列化接口

  • 相关阅读:
    10. Regular Expression Matching
    9. Palindrome Number
    6. ZigZag Conversion
    5. Longest Palindromic Substring
    4. Median of Two Sorted Arrays
    3. Longest Substring Without Repeating Characters
    2. Add Two Numbers
    链式表的按序号查找
    可持久化线段树——区间更新hdu4348
    主席树——树链上第k大spoj COT
  • 原文地址:https://www.cnblogs.com/jhxxb/p/10523040.html
Copyright © 2011-2022 走看看