zoukankan      html  css  js  c++  java
  • 转:Serializable---序列化

    Serializable

       

       今天在看代码的时候,看到[Serializable],不明白是什么意思。查阅了网上的一些资料,才明白这是指给类添加序列化的特性,即添加后它就可以进行序列化,那什么是序列化呢?

       1、序列化定义

            序列化是指把类别的实例(对象)转换成容易传输的格式(文件(流))的过程,然后使用HTTP通过Internet在客户端和服务器之间传输该对象。通过反序列化,文件(流)可以重新构造成对象。此过程中,先将对象的公共字段和私    有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。

       2、使用序列化的原因 

            将对象的状态保存在存储媒体中以便在以后重新创建出完全相同的副本;按值将对象从一个应用程序域发送至另一个应用程序域。例如,序列化可用于在ASP.NET中保存回话状态,以及将对象复制到Windows窗体的剪贴板    中。它还可用于按值将对象从一个应用程序域远程传递至另一个应用程序域。

       3、基本序列化

          [Serializable]

          public class MyObject {

             public int n1 = 0;       

             public int n2 = 0;         

             public String str = null;      

           }

           以下代码片段说明了如何将此类的一个实例序列化为一个文件:

           MyObject obj = new MyObject();            

             obj.n1 = 1;          

               obj.n2 = 24;            

               obj.str = "一些字符串";

               IFormatter formatter = new BinaryFormatter();            

               Stream stream = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);            

               formatter.Serialize(stream, obj);            

               stream.Close();

          4、选择性序列化    

           类通常包含不应被序列化的字段。例如,假设某个类用一个成员变量来存储线程 ID。当此类被反序列化时,序列化此类时所存储的 ID 对应的线程可能不再运行,所以对这个值进行序列化没有意义。可以通过使用    NonSerialized 属性标记成员变量来防止它们被序列化,如下所示:

          [Serializable]            

         public class MyObject            

        {               

         public int n1;               

        [NonSerialized]

         public int n2;             

         public String str;      

       }

  • 相关阅读:
    记录一次阿里云服务器被攻击的经历
    post字符 特殊字符处理【转】
    forkjoin框架疑问记录
    centos7 安装 maven 和ant git 以及 rocketmq 4.2安装过程(安装成功,调用失败)
    IntelliJ Idea编译报错:javacTask: 源发行版 1.8 需要目标发行版 1.8
    记录一次json转换的经历
    maven项目在idea下右键不出现maven的解决办法
    Mac系统查看端口占用和杀死进程
    委托所想
    win8中的参数传递
  • 原文地址:https://www.cnblogs.com/FredWang/p/4286722.html
Copyright © 2011-2022 走看看