为什么java需要序列化对象
- 序列化是一种用来处理对象流的机制
- 所谓对象流:就是将对象的内容进行流化,可以对流化后的对象进行读写操作,也可将流化后的对象传输与网络之间
- 序列化是为了解决在对象流进行读写操作时所引发的问题
- 序列化的实现:将需要被序列化的类实现Serializable接口(标记接口) ,该接口没有需要被实现的方法,implement Serializable 只是为了标注该对象是可被序列化的,而后使用一个输出流(如 FileOutPutStream)来构造出一个ObjectOutPutStream对象,接着,是用writerObject方法就可以参数为Obj的对象写出(即保存其状态),要是恢复的要使用相应的输入流ObjectInputStream
什么时候使用序列化?
- 对象序列化可以实现分布式对象,
主要用于如RMI(远程调用 Remote method invocation) 用利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样
2.java对象序列化不仅保留一个对象数据,而且递归保存对象引用的每个对象的数据
可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上传递,利用对象序列化可以进行对象的深复制,即复制对象本身及引用的对象本身,序列化一个对象可能得到整个对象序列
3.序列化可以将内存中的类写入文件或者数据库
比如,将某个类序列化后保存为文件,下次读取时只需要将文件中的数据反序列化就可以将原来的类还远到内存中,也可以将类序列化为流进行传输,总的来说就是将一个已经实例的类转换为文件储存,下次需要实例化的时候只要反序列化既可以将实例化的内存中保留序列化时类中锁有变量和状态
序列化以后都是字节流了,无论他原来是什么东西,都能变成一样东西,就可以进行通用的格式传输或保存,传输结束以后,要再次使用,就进行反序列化,这样对象还是对象,文件还是文件
- 因为JAVA中要将对象序列化为流的形式进行传输
- 对象的序列化就是为了数据传输,在你的代码里是对象格式,而在传输的时候不可能还保持对象的样子
- 当两个进程在进行通信时,彼此可以发送各种类型的数据,无论是何种类型的数据,都会以二进制序列额形式在网络上传输,发送方需要把这个JAVA对象转换为字节序列化,才能在网络上传送,接收方则需要把字节序列在恢复成java对象
1.概念
序列化:吧Java对象转换为字节序列的过程反序列化:把字节序列恢复为java对象的过程
吧对象的字节序列永久保存在硬盘上,通常存放在一个文件中
在网络上传送对象的字节序列
- 所谓的Serializable,就是java提供的通用数据保存和读取的接口,至于从什么地方读出来和保存到哪里都被隐藏在函数参数的背后,这样子任何类型只要实现了Serializable接口,就可以保存到文件中,或者座位数据流的方式通过网络发送到别的地方,也可以用管道来传输到系统其它程序中,这样子极大简化类的设计,只要设计一个读取功能就能解决上面所说的问题
- java的对象序列化能让你将一个实现了Serializable接口的对象转换成一组byte,这样日后要用到这个对象时候,就能把这些byte数据恢复出来,并据此重新构建那个几个对象了
- 工作流中流程变量的几种类型:String Integer short long double boolean date binary serializable ,这就是什么将javabean实现序列化的原因了,因为你讲对象设置到流程变量中必须要实现序列化,否者报错找不到类型
- java对象序列化机制就是把内存中的java对象(User之类的javabean)转换成为二进制流,java对象序列化以后可以很方便的储存或者在网络中传输
- java的序列化机制是通过运行时判断类的序列化ID来判定版本是否一致
- 在反序列化是,java虚拟机会通过二进制流中serialVersionID与本地的对应的实体类进行比较,如果相同就认为一致的,可以进行反序列化,正确获得信息,否则抛出序列化版本不一致的异常
- 所以设计到数据传输或者储存类,严格意义上来说都要加上序列化ID,这也是一种良好的编程习惯.
为什么java需要序列化对象的更多相关文章
- Android使用HttpURLConnection通过POST方式发送java序列化对象
使用HttpURLConnection类不仅可以向WebService发送字符串,还可以发送序列化的java对象,实现Android手机和服务器之间的数据交互. Android端代码: public ...
- 【译】Java中的对象序列化
前言 好久没翻译simple java了,睡前来一篇. 译文链接: http://www.programcreek.com/2014/01/java-serialization/ 什么是对象序列化 在 ...
- java序列化对象 插入、查询、更新到数据库
java序列化对象 插入.查询.更新到数据库 : 实现代码例如以下: import java.io.ByteArrayInputStream; import java.io.ByteArrayOutp ...
- Java 序列化 对象序列化和反序列化
Java 序列化 对象序列化和反序列化 @author ixenos 对象序列化是什么 1.对象序列化就是把一个对象的状态转化成一个字节流. 我们可以把这样的字节流存储为一个文件,作为对这个对象的复制 ...
- Java IO(Properties/对象序列化/打印流/commons-io)
Java IO(Properties/对象序列化/打印流/commons-io) Properties Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载. ...
- Java I/O - 对象的输入输出与序列化
先说概念: 一.相关概念 序列化是Java提供的一种将对象写入到输出流.并在之后将其读回的机制. 序列化:把内存中的java对象转换成与平台无关的二进制字节序列,以便永久保存在磁盘上或通过网络进行传输 ...
- 序列化+fastjson和java各种数据对象相互转化
序列化的定义 序列化就是一种用来处理对象流的机制 所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间. 序列化是将对象转换为容易传输的格式的过程 例 ...
- Java 序列化对象工具类
SerializationUtils.java package javax.utils; import java.io.ByteArrayInputStream; import java.io.Byt ...
- Java基础之对象序列化
1. 什么是Java对象序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长.但在现 ...
随机推荐
- Android学习之Fragment解析
1.定义 Fragment中文解释是碎片的意思,主要用在大屏幕设备上,例如平板电脑上,支持更加动态和灵活的UI设计.Fragment在你的应用中相当于是一个模块化和可重用的组件,因为Fragm ...
- “全栈2019”Java多线程第二十五章:生产者与消费者线程详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- jzoj1407
首先設在整個數組內可以直接到達n+1的最左邊的點點為x 則x+1-n區間都可以一次或2次到達n+1 如果某一個點i可以一次到達n+1,則其i+a[i]大於等於n+1 否則可以先跳到i再跳到n+1,需要 ...
- 将一个List拆分为n份的方法
public static void main(String[] args) { List<Integer> taskList = new ArrayList<>(); for ...
- 【NOIP2013】 火柴排队 贪心+splay
这题为啥我写得这么复杂. 首先我们不难发现,我们将序列$a$和序列$b$排序,考虑两序列内无相同元素,那么最小值显然为$\sum_{i=1}^{n} (a_i-b_i)^2$. 下面考虑做法 首先,我 ...
- [原创] rtrim() 格式化中文问题
先看以下代码 var_dump(rtrim("互联网产品.", ".")); 我们以为会得到结果 "互联网产品", 但实际上获得的是 &qu ...
- Collection、Set、List概念上的区别及关联
类图如下:
- HttpComponents组件探究 - HttpClient篇
在Java领域,谈到网络编程,可能大家脑海里第一反应就是MINA,NETTY,GRIZZLY等优秀的开源框架.没错,不过在深入探究这些框架之前,我们需要先从最original的技术探究开始(当然,需要 ...
- ASP.NET5使用FaceBook登录
原版教程 使用VS2015创建Web应用: 此教程使用的是FaceBook账号登录,需要添加相关的类,打开Nuget: 搜索Microsoft.AspNet.Authentication.Facebo ...
- 可调试Windows服务框架
参考: Build A Windows Service Framework 新建ServiceFramework类库,项目中需引用: using System.Configuration.Instal ...