zoukankan      html  css  js  c++  java
  • 使用序列化和对象流实现对象的序列化

    使用序列化和对象流实现对象的序列化

    1 目标对象的类要实现 Serializable 接口
      其成员若是引用类型 也必须实现Serializable 接口
      若某个成员不需要序列化 transient

    2 这个类可以实现复杂对象图的深度复制

     1 import java.io.ByteArrayInputStream;
     2 import java.io.ByteArrayOutputStream;
     3 import java.io.ObjectInputStream;
     4 import java.io.ObjectOutputStream;
     5 import java.io.Serializable;
     6 
     7 public class DeepCopy {
     8 
     9     /**
    10      * 深度复制,复制的整个对象图
    11      *  
    12      * 要求:目标要实现了序列化的接口
    13               transient修饰的属性由于不能被序列化 所以不会被克隆
    14      */
    15     public static Serializable deeplyCopy(Serializable src){
    16         
    17         try {
    18             
    19             ByteArrayOutputStream baos = new ByteArrayOutputStream();
    20             ObjectOutputStream oos = new ObjectOutputStream(baos);
    21             
    22             oos.writeObject(src);
    23             oos.close();
    24             baos.close();
    25             
    26             byte[] bytes = baos.toByteArray();
    27             ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
    28             ObjectInputStream ois = new ObjectInputStream(bais);
    29             Serializable copy = (Serializable) ois.readObject();
    30             ois.close();
    31             bais.close();
    32             
    33             return copy ;
    34             
    35         } catch (Exception e) {
    36             e.printStackTrace();
    37         }
    38 
    39         return null ;
    40     }
    41     
    42 }
  • 相关阅读:
    BZOJ 1003 物流运输
    549565
    26566
    68
    554554
    5656
    49886
    5989
    6898
    656
  • 原文地址:https://www.cnblogs.com/wihainan/p/4782726.html
Copyright © 2011-2022 走看看