课程名称:JAVA输入输出流
课程章节:第6章 对象的序列化和反序列化
课程讲师: Cedar
课程内容:
一、序列化基础操作
1)对象序列化,就是把Object转换成byte序列,反之叫对象的反序列化
2)序列化流(ObjectOutputStream),是过滤流-->writeObject
反序列化流(ObjectIntputStream),-->readObject
3)序列化接口(Serializable)
对象必须实现序列化接口,才能进行序列化,否则将出现异常
接口没有任何方法,只是一个标准
示例:
1、对象的序列化
//提示java.io.NotSerializableException异常,表示Student类未实现Serializable接口
2、对象的反序列化
二、transient和ArrayList源码分析
4)transient关键字
private transient int stuage;//该元素不会进行JVM默认的序列化,故序列化时值为0
示例:
//自行完成这个元素的序列化,反序列化
private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException
private void readObject(java.io.ObjectInputStream s) throws java.io.IOException,ClassNotFoundException
ArrayList仅对有效元素进行序列化、反序列化
三、序列化中子父类的构造函数问题
5)序列化中,子类和父类的构造函数调用
//对子类对象进行反序列化操作时,如果其父类没有实现反序列化接口,那么其父类的构造函数会被调用
//递归调用父类的构造函数
课程收获:
对JAVA输入输出流有了整体的了解,字节流、字符流、对象序列化流,需继续理解不同场景下如何使用合适的流类型,以及不同方法的性能差异进行比较。