1
方法签名:
在ObjectOutputStream 里 是 writeObject()
在ObjectInputStream 里 是 readObject()
在被序列化的对象中 是
writeObject(ObjectOutputStream)
和 readObject(
ObjectInputStream
)
(事实上
在writeObject
(ObjectOutputStream)
中内部实现
是oos 的 writeObject() [前者] 通过反射 调用了被序列化对象的writeObject[后者])
2
方法签名
private
writeObject(ObjectOutputStream) private readObject(
ObjectInputStream
)
public
writeExteanal(ObjectOutputStream) private readExternal(
ObjectInputStream
)
3
在main中
创建一个
ObjectOutputStream
目的是 调用其
writeObject()
实现对象的序列化
如果一个流序列化了a b,那么反序列化的调用顺序也是得到的a、b
在被序列化的对象中的
writeObject(ObjectOutputStream)函数中
ObjectOutputStream来自于参数
目的是 序列化对象中的某个引用类型的字段
如果一个流序列化了a b,那么反序列化的调用顺序也是得到的b、a
4
Externalizable继承自 Serializable
前者先调用public 默认构造器 再调用readExtern
后者不通过构造器 直接readObject
(Serializable这样说:
读取对象类似于运行新对象的构造方法。为对象分配内存并将其初始化为零 (NULL)。为不可序列化类调用无参数构造方法,然后从以最接近 java.lang.object 的可序列化类开始和以对象的最特定类结束的流恢复可序列化类的字段。)
5
只要利用同一个流
那么无论对象有多少次引用 只被序列化一次
6
一个父类实现Serializable接口后,他的子类都将自动的实现序列化
要为一个没有实现Serializable接口的父类,编写一个能够序列化的子类要做两件事情:
其一、父类要有一个无参的constructor;
其二、子类要负责序列化(反序列化)父类的域。
在readObject中不要使用可被覆写的方法
7
readResolve 与 writeReplace
这两个方法都是返回一个object
writeReplace先于writeObject或writeExternal被调用
readResolve晚于readObject或readExternal被调用(事实上,是先调用readObject构造了一个临时对象,然后调用readResolve,按指定的方法返回真正的对象。此时临时对象将等待gc)
所以这两个方法常用于实例控制
如果要利用readResolve进行单例控制 需要所有域都为transient
分享到:
相关推荐
学习Java序列化,里面包含一份PPT以及相应的源码演示
java序列化(Serializable)的作用和反序列化.doc 有详细的讲解哦。 在什么地方用的到都有说明的.
java 序列化详细解释 很详细 适用于高级软件开发者
java序列化代码示例,详细讲解序列化作用于使用注意规则项!!!
Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 ...
序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例...虽然你可以用你自己的各种各样的方法来保 存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。
大家请看Java的序列化结构有不足的地方请指教也希望指出不足的地方。
java序列化和反序列化java序列化和反序列化java序列化和反序列化
将java数据 序列化成PHP的格式 a:4:{s:6:"title2";s:13:"这是标题2";s:6:"title3";s:13:"这是标题3";s:5:"title";s:13:"这是标题1";s:6:"title4";s:13:"这是标题4";} 或者a:1:{i:0;a:1:{s:4:"name";s:10:"这是1321";...
在应用java进行c-s开发的时候,尤其涉及到图片和视频之间的传输时,需要用序列化和反序列化技术,希望对您有帮助
该资源提供了java常见的三个序列化框架,分别是:JBoss Marshalling,messagePack,protobuf-java
07-Java序列化面试题(10题)-新增
java 序列化,java 序列化,java 序列化,java 序列化,java 序列化,java 序列化
NULL 博文链接:https://hw1287789687.iteye.com/blog/2190768
E043-服务漏洞利用及加固-利用Java序列化漏洞进行渗透测试
java序列化是面试中经常涉及的重要主题之一。对Java序列化的深入了解不仅可以展示你的编程技能,还能体现出你对Java核心概念的掌握。本文精选了20道复杂的Java序列化面试题,并提供了详细的解析,旨在帮助你更好地...
Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化
Java序列化机制(2)- serialVersionUID 实验 http://blog.csdn.net/suileisl/article/details/16991753
android(包括java)序列化一个对象传给php去做处理,或是接到php的序列化的对象在java中做处理的工具jar包以及使用方法. 使用方法: byte[] b = null; b = PHPSerializer.serialize(一个对象);//将一个对象序列化后返回...
详细讲解了java的序列化用处、原理、算法、如何实现。希望能帮到大家。