Java序列话和反序列化理解(New)
public interface Serializable {
}
该接口没有任何实现方法,是一种标志,instance of Serializable 会判断object类型
一、序列化和反序列化的概念
把对象转换为字节序列的过程称为对象的序列化。
把字节序列恢复为对象的过程称为对象的反序列化。
对象的序列化主要有两种用途:
1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;
2) 在网络上传送对象的字节序列。
二、JDK类库中的序列化API
java.io.ObjectOutputStream代表对象输出流,它的writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。
java.io.ObjectInputStream代表对象输入流,它的readObject()方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回。
只有实现了Serializable和Externalizable接口的类的对象才能被序列化。Externalizable接口继承自 Serializable接口,实现Externalizable接口的类完全由自身来控制序列化的行为,而仅实现Serializable接口的类可以 采用默认的序列化方式 。
对象序列化包括如下步骤:
1) 创建一个对象输出流,它可以包装一个其他类型的目标输出流,如文件输出流;
2) 通过对象输出流的writeObject()方法写对象。
对象反序列化的步骤如下:
1) 创建一个对象输入流,它可以包装一个其他类型的源输入流,如文件输入流;
2) 通过对象输入流的readObject()方法读取对象。
三、serialVersionUID的作用
serialVersionUID: 字面意思上是序列化的版本号,凡是实现Serializable接口的类都有一个表示序列化版本标识符的静态变量
1 private static final long serialVersionUID
实现Serializable接口的类如果类中没有添加serialVersionUID,那么就会出现如下的警告提示
aaarticlea/png;base64,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" alt="" />
serialVersionUID有两种生成方式:
采用aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAAVCAIAAACMmjY4AAACV0lEQVRoge1av0vDQBTuv9SxotChQzN0MENpra3VYgoVkqFQKFbQQRddIoguzSBdCgq6ukkRREQd4iCCSMFZ/AviEAzhfry7nGmT4R0fx/V+vPfuvS8fbUnm53uKQMSOjIcN2wxaxn25RyBih4piZTt3TycL2GPP6z3PUyGWfx6B4EGRWInHjUgzBIq1drXtAxULERUQseqX/c8vo37RhxWLKWDMbUKpk98jqZrzl1jYV9riiZTDIHIeEwIIFKs67r1PN1fGPXoprFg86/S8zCWFhYklufMs7SyKnXjMwUeg+lxilUdd96NVHnXpJcIE0zoSK95bJItIxGIolj609KGpO5buWMtD8/Ft3R/rjqk7pu5YhGJ5f9pIeCXYxmQkHTrzFL2BtycY03tgR0AwkXwxzTIfRck88IwDGyLFw7zm/4mVpRWrdNaZuE0GXpsTt1k63WLWjFlFYADEDZ8SXk/mlLC08BFh2YQFkPcOD2T4qpYxBTthMBSraBua3S7aRtFua8ftm+eGZhv+pGa3Ndvwt4UVi35KFELnJY7JY+Ig7B1mCZxKwgjPF2xZ5hZMI2reYbbNh1hZ+DtW4ah1/bBaONyglyIFqkwshevFSCxhPGoRSnqXeaJkSJAIsQS/CvMHjfFdLb/foJd8xQpfnh7DM7xUMk8BRmBfRAMqJwyGiAewyZuE4xHyRt47nQrexWmbcCoI73ACucRa2q2d31YX92qRMoJACBQrt1PJDSq5QYVewn/eETAgYgEt8bgRaQa+3YCYFdQVK/E3frBPc69ILGzYhO0XUZDh8519YgEAAAAASUVORK5CYII=" alt="" />这种方式生成的serialVersionUID是1L,例如:
1 private static final long serialVersionUID = 1L;
采用aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAANEAAAATCAIAAACBeH8HAAACK0lEQVRoge1VMUvDQBTO3yoodOjQDB3MUFpra7WYgEI6FArFCjrooktcdGkG6VJQ0NVNxEUElwqKICI4CP6HOhQ13L17eUnaS9H3ccPdy7v3fXn35WKMouPz45EHD2Tg/jFieI7BSAL2HEM32HMM3VB6bvl8czx0qmH8Byg9Vz3rvL7b1dNOyH4DqGAYhhCXI7OPKWnGaxrfmDhvPD3ECkEIESBfVag8aD+/rS0O2vEUy/HZ8RxdSVqaZ6dXdMi3DBgfIZ4r9lvDl0ax3wplUl11oZG0wJ6bBmJ6zuo1rZ5r+U3Lby703LunlfHc8l3Ldy2/CdKAv9FgkPK/kG9jeY7/soWLHcxRiVFFEM2gpFA9YE2QXcUraMM7BgYj6VF1HlQFLoH6wUXheP16WAfGQ/16WC8cbYA0QtNDJ4jc5BPKm4fmRNKM10HS6AoR9njdiKSH0g1Knd9HwUXes03PyXt23nPMQ+fyvmZ69jhoeo7p2TKN/N3EViw0nVJZlQOKlNtB50qoWdgVVaGqSDx23Ii6PRdE7qBxcbuU21+l0CT0HHgMdK5Iu+Q04i4VIulB2CN5bgQ5nsIeypWm57J7tcFNJbtbQziEKyc4xyNgKdW1Ac7xHGJxkGsamhEioZQAkPpnl0oShShUj6om3gqBHc5XvdL8duXkqjy3U0Fee1IQjk0DIyNFKA84s1XKdEuZbkmTDsKXzfgb4DNm6AZ7jqEb7DmGbrDnGLrxBTOIm3wX0K0ZAAAAAElFTkSuQmCC" alt="" />这种方式生成的serialVersionUID是根据类名,接口名,方法和属性等来生成的,例如:
1 private static final long serialVersionUID = 4603642343377807741L;
四、serialVersionUID的取值
serialVersionUID的取值是Java运行时环境根据类的内部细节自动生成的。如果对类的源代码作了修改,再重新编译,新生成的类文件的serialVersionUID的取值有可能也会发生变化。
类的serialVersionUID的默认值完全依赖于Java编译器的实现,对于同一个类,用不同的Java编译器编译,有可能会导致不同的 serialVersionUID,也有可能相同。为了提高serialVersionUID的独立性和确定性,强烈建议在一个可序列化类中显示的定义serialVersionUID,为它赋予明确的值。
显式地定义serialVersionUID有两种用途:
1、 在某些场合,希望类的不同版本对序列化兼容,因此需要确保类的不同版本具有相同的serialVersionUID;
2、 在某些场合,不希望类的不同版本对序列化兼容,因此需要确保类的不同版本具有不同的serialVersionUID。
五、什么情况下需要序列化
当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;
当你想用套接字在网络上传送对象的时候;
当你想通过RMI传输对象的时候;
(老实说,上面的几种,我可能就用过个存数据库的)
六、如何实现序列化
作用。为啥要实现这个 Serializable 接口,也就是为啥要序列化
七、serialVersionUID 这个的值到底是在怎么设置的,有什么用。有的是1L,有的是一长串数字,迷惑ing。
解决办法:在 JavaBean 对象中增加一个 serialVersionUID 字段,用来固定这个版本,无论我们怎么修改,版本都是一致的,就能进行反序列化了
八、 How---怎么实现序列化:
只有实现了 Serializable 或 Externalizable 接口的类的对象才能被序列化,否则抛出异常。
对于实现了这两个接口,具体序列化和反序列化的过程又分以下3中情况:
情况1:若类仅仅实现了Serializable接口,则可以按照以下方式进行序列化和反序列化
ObjectOutputStream采用默认的序列化方式,对对象的非transient的实例变量进行序列化。
ObjcetInputStream采用默认的反序列化方式,对对象的非transient的实例变量进行反序列化。
情况2:若类不仅实现了Serializable接口,并且还定义了readObject(ObjectInputStream in)和writeObject(ObjectOutputSteam out),则采用以下方式进行序列化与反序列化。
ObjectOutputStream调用对象的writeObject(ObjectOutputStream out)的方法进行序列化。
ObjectInputStream会调用对象的readObject(ObjectInputStream in)的方法进行反序列化。
情况3:若类实现了Externalnalizable接口,且类必须实现readExternal(ObjectInput in)和writeExternal(ObjectOutput out)方法,则按照以下方式进行序列化与反序列化。
ObjectOutputStream调用对象的writeExternal(ObjectOutput out))的方法进行序列化。
ObjectInputStream会调用对象的readExternal(ObjectInput in)的方法进行反序列化。
参考文章:
1、 Java基础学习总结——Java对象的序列化和反序列化 (孤傲苍狼)
Java序列话和反序列化理解(New)的更多相关文章
- java 对象序列化与反序列化
Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为 ...
- java 的序列化与反序列化
前言: 一直很不理解java的序列化的概念,为什么java对象的序列化要实现 Serializable的接口?或者要实现Externalizable的接口?而且Externalizable 的父类还是 ...
- Java基础—序列化与反序列化(转载)
转载自: Java序列化与反序列化 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程. 2.为什么需要序列化 ...
- Java 中序列化与反序列化
一. 序列化和反序列化概念 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.将程序中的对象,放入文 ...
- Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式) 原文地址:http://alanland.iteye.com/admin/blogs/1600685(欢迎转载 ...
- Java序列化机制中的类版本问题 serialVersionUID的静态字段 含义
Java序列化机制中的类版本问题 分类: [Java 基础]2014-10-31 21:13 480人阅读 评论(0) 收藏 举报 目录(?)[+] 原文地址:http://yanwu ...
- Java安全之Fastjson反序列化漏洞分析
Java安全之Fastjson反序列化漏洞分析 首发:先知论坛 0x00 前言 在前面的RMI和JNDI注入学习里面为本次的Fastjson打了一个比较好的基础.利于后面的漏洞分析. 0x01 Fas ...
- Java安全之SnakeYaml反序列化分析
Java安全之SnakeYaml反序列化分析 目录 Java安全之SnakeYaml反序列化分析 写在前面 SnakeYaml简介 SnakeYaml序列化与反序列化 常用方法 序列化 反序列化 Sn ...
- 【转】关于Java的Daemon线程的理解
原文地址:http://www.cnblogs.com/ChrisWang/archive/2009/11/28/1612815.html 关于Java的Daemon线程的理解 网上对Java的Dae ...
随机推荐
- jxl读取excel
String path=""; String path2=""; File file = new File(path); File file2 = new Fi ...
- 【C/C++】10分钟教你用C++写一个贪吃蛇附带AI功能(附源代码详解和下载)
C++编写贪吃蛇小游戏快速入门 刚学完C++.一时兴起,就花几天时间手动做了个贪吃蛇,后来觉得不过瘾,于是又加入了AI功能.希望大家Enjoy It. 效果图示 AI模式演示 imageimage 整 ...
- js的常用方法和对象学习
js的常用方法和对象学习String对象:操作字符的. 使用:字符串.函数名. 大小写转换: toUpperCase() 转换大写 toLowerCase() 转换小写 function testSt ...
- 利用java实现一个简单的链表结构
*博客搬家:初版发布于 2014/07/04 定义: 所谓链表就是指在某节点存储数据的过程中还要有一个属性用来指向下一个链表节点,这样的数据存储方式叫做链表 链表优缺点: 优点:易于存储和删除 缺点: ...
- Angular material mat-icon 资源参考_Places
ul,li>ol { margin-bottom: 0 } dt { font-weight: 700 } dd { margin: 0 1.5em 1.5em } img { height: ...
- Owin WebAPI上传文件
Owin是微软出了几年的东东了,一直没时间学习.大概了解了下,是一个脱离IIS环境,快速搭建WebAPI服务的东西. 刚好想尝试下尽量脱离IIS创建简单快捷配置的项目,就是用了Nginx+Owin的模 ...
- jQuery示例 | 分级菜单
<!DOCTYPE html> Title .header{ background-color: black; color: wheat; } .content{ min-height: ...
- vue相关问题在工作中的问题及ui组件及html样式搭建相关网站下载资源
https://youzan.github.io/vant/#/zh-CN/nav-bar http://www.builive.com/docs/api/index.html bui框架BUI ...
- jQuery 学习笔记(TryjQuery)
第一集.页面加载完成后执行 js 代码: $(document).ready(function(){ $("h1").text("Where to?"); }) ...
- Ubuntu 16.04安装SecureCRT替代XShell
XShell应该是最强大的,在Ubuntu下只有SecureCRT能实现跨平台(Linux/Windows/Mac),并且可以实现Tab的功能等.当然,还有其它的类似PuTTY这些.Windows下建 ...