转: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;

}

时间: 2024-12-07 09:31:51

转:Serializable---序列化的相关文章

C#中Serializable序列化实例详解

本文实例讲述了C#中Serializable序列化.分享给大家供大家参考.具体分析如下: 概述: 序列化就是是将对象转换为容易传输的格式的过程,一般情况下转化打流文件,放入内存或者IO文件 中.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象,或者和其它应用程序共享使用.反之,反序列化根据流重新构造对象. 一.几种序列化技术 1)二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用.例如,通过将对象序列化到剪贴板,可在

Serializable 序列化和反序列化

遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题:a)什么叫序列化和反序列化b)作用.为啥要实现这个 Serializable 接口,也就是为啥要序列化c)serialVersionUID 这个的值到底是在怎么设置的,有什么用.有的是1L,有的是一长串数字,迷惑ing.      我刚刚见到这个关键字 Serializable 的时候,就有如上的这么些问题. 在处理这个问题之前,你要先知道一个问题,这个比较重要.这个Serializable接口,以及相关的东西

Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释

遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题a,什么叫序列化和反序列化b,作用.为啥要实现这个 Serializable 接口,也就是为啥要序列化c,serialVersionUID 这个的值到底是在怎么设置的,有什么用.有的是1L,有的是一长串数字,迷惑ing.我刚刚见到这个关键字 Serializable 的时候,就有如上的这么些问题. 在处理这个问题之前,你要先知道一个问题,这个比较重要.这个Serializable接口,以及相关的东西,全部都在 J

[转]Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释

原文地址:https://blog.csdn.net/qq_27093465/article/details/78544505 遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题: 1.什么叫序列化和反序列化 2.作用.为啥要实现这个 Serializable 接口,也就是为啥要序列化 3.serialVersionUID 这个的值到底是在怎么设置的,有什么用.有的是1L,有的是一长串数字,迷惑ing. 我刚刚见到这个关键字 Serializable 的时候,就

java.io.Serializable 序列化接口

什么是序列化.反序列化? Serialization(序列化)是一种将对象以一连串的字节描述的过程: 反序列化deserialization是一种将这些字节重建成一个对象的过程. 序列化通俗一点说就是能将Java对象转化成文本文件的一种方式. 什么情况下需要序列化 ?a)当你想把的内存中的对象保存到一个文件中或者数据库中时候:b)当你想用套接字在网络上传送对象的时候:c)当你想通过RMI传输对象的时候: 如何实现序列化 ? 将需要序列化的类实现Serializable接口就可以了. public

Serializable序列化

在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用 ObjectInputStream 和 ObjectOutputStream 进行对象的读写 虚拟机是否允许反序列化,不仅取决于类路径和功能代码是否一致,一个非常重要的一点是两个类的序列化 ID 是否一致(就是 private static final long serialVersionUID = 1L).虽然两个类的功能代码完全一致,但是序列化 ID 不同,他们无法相互序列化和反序列化. 序列化时,

C#中Serializable序列化

序列化就是是将对象转换为容易传输的格式的过程,一般情况下转化打流文件,放入内存或者IO文件 中.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象,或者和其它应用程序共享使用.反之,反序列化根据流重新构造对象. 一.几种序列化技术 1)二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用.例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象.您可以将对象序列化到流.磁盘.内存和网络等等.远程处理使用序列化“通过

Serializable序列化的作用

这里转载一篇讲解java序列化(Serializable)和反序列化方面的感觉很好的文章.1.序列化是干什么的?简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保 存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化.2.什么情况下需要序列化a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候:b)当你想用套接字在网络上传送对象的时候:c)当你

java.io.Serializable 序列化问题

Person.java package a.b.c; public class Person implements java.io.Serializable{ // private static final long serialVersionUID = 2481632967198330813L; String field1; String field2; String field3; public String getField1() { return field1; } public voi

Serializable 序列化

package serializable; import java.io.Serializable; public class TestOne implements Serializable{ private static final long serialVersionUID = 1L; /** * */ } 原文地址:https://www.cnblogs.com/lxh520/p/9080544.html