JAVA学习笔记-序列化
2017-09-16 19:33
351 查看
1.对象序列化和反序列化
对象序列化是指将java对象转化为字节序列的过程,而反序列化是指将字节序列还原回java对象的过程。
java对象的生命周期 -- 只有在JVM运行期间对象才会存在,而序列化过程是为了将对象持久化(保存到硬盘上)。序列化保存的是对象的状态,即成员变量,不关注静态变量。
2.实体对象为什么要实现序列化接口?
Serializable是一个标识化接口,实现了Serializable接口的实体类才能序列化。
在ObjectOutputStream的writeObject0中有这样一串代码
3.实体对象中为什么要添加序列化id?
当实现java.io.Serializable接口的实体(类)没有显式地定义一个名为serialVersionUID,类型为long的变量时,Java序列化机制会根据编译的class自动生成一个serialVersionUID作序列化版本比较用,这种情况下,只有同一次编译生成的class才会生成相同的serialVersionUID 。在反序列化时,系统会去检验这个ID,如果相同则表示为同一版本,不同则会报出异常。
4.对象的序列化是安全的吗?
不是安全的。序列化以二进制文档写入硬盘,这一行为完全可以。甚至可以通过二进制输出流查看其明文内容,甚至private的字段。
对象序列化是指将java对象转化为字节序列的过程,而反序列化是指将字节序列还原回java对象的过程。
java对象的生命周期 -- 只有在JVM运行期间对象才会存在,而序列化过程是为了将对象持久化(保存到硬盘上)。序列化保存的是对象的状态,即成员变量,不关注静态变量。
2.实体对象为什么要实现序列化接口?
Serializable是一个标识化接口,实现了Serializable接口的实体类才能序列化。
在ObjectOutputStream的writeObject0中有这样一串代码
private void writeObject0(Object obj, boolean unshared) if (obj instanceof String) { writeString((String) obj, unshared); } else if (cl.isArray()) { writeArray(obj, desc, unshared); } else if (obj instanceof Enum) { writeEnum((Enum<?>) obj, desc, unshared); } else if (obj instanceof Serializable) { writeOrdinaryObject(obj, desc, unshared); } else { if (extendedDebugInfo) { throw new NotSerializableException( cl.getName() + "\n" + debugInfoStack.toString()); } else { throw new NotSerializableException(cl.getName()); } }如果不是String,Enum或者数组,那么该对象必须要实现Serializable接口,不然会抛出NotSerilizableException异常
3.实体对象中为什么要添加序列化id?
当实现java.io.Serializable接口的实体(类)没有显式地定义一个名为serialVersionUID,类型为long的变量时,Java序列化机制会根据编译的class自动生成一个serialVersionUID作序列化版本比较用,这种情况下,只有同一次编译生成的class才会生成相同的serialVersionUID 。在反序列化时,系统会去检验这个ID,如果相同则表示为同一版本,不同则会报出异常。
4.对象的序列化是安全的吗?
不是安全的。序列化以二进制文档写入硬盘,这一行为完全可以。甚至可以通过二进制输出流查看其明文内容,甚至private的字段。
相关文章推荐
- java对象序列化学习笔记
- java对象序列化学习笔记
- java学习笔记--字符流、对象序列化
- java对象序列化学习笔记
- Java与Flex学习笔记(6)----Java对象与ActionScript对象之间的序列化
- java对象序列化学习笔记[转]
- Java对象序列化学习笔记
- 【Java学习笔记】对象的序列化和反序列化
- java学习笔记(6)——序列化
- Java学习笔记——IO操作之对象序列化及反序列化
- java学习笔记(6)——序列化
- java对象序列化学习笔记(z)
- [javase]java序列化学习笔记
- Java序列化学习笔记
- java对象序列化学习笔记
- java对象序列化学习笔记
- java对象序列化学习笔记
- java 序列化学习笔记
- Java对象序列化学习笔记
- [零散篇]Java学习笔记---Java的对象序列化以及文件IO处理