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 }
  • 相关阅读:
    利用GitHub+Node.js+Hexo搭建个人博客(一)
    更丰富的符号工具包 Font Awesome
    Markdwon入门2
    Codechef:Fibonacci Number/FN——求通项+二次剩余+bsgs
    二次剩余理论
    基姆拉尔森公式和蔡勒公式(计算星期几)
    幂方程(模意义下)
    etcd
    mysql group by
    UUID
  • 原文地址:https://www.cnblogs.com/wihainan/p/4782726.html
Copyright © 2011-2022 走看看