java类库的阅读笔记_jdk1.7.0_40_java.io.Serializable

来源:互联网 发布:国家网络管理局 编辑:程序博客网 时间:2024/05/20 16:44
2013 1024:
类:
java.util.LinkedList
笔记:
序列化感觉是一个很简单的东西,serialVersionUID在序列化这个对象时,会被附带到对象信息中。调用ObjectInputStream对象的readObject方法时,首先会查找输入流中的对象,能不能在虚拟机中找到对应的类,如果找不到,就抛出java.lang.ClassNotFoundException。然后查看这个类的serialVersionUID和附在输入流中的serialVersionUID是否一致,不一致的话,抛出java.io.InvalidClassException。
序列化的存储格式应该是一个非常简单的约定,类似协议格式,就没有必要深究了。
ObjectOutputStream对象的defaultWriteObject方法,会使用反射的方法,进行默认的序列化,如果属性都是基础类型,在writeObject中,调用这个方法就行了,当然这种情况,不写writeObject效果是一样的。如果属性里面有对象,类似LinkedList,那么就最好在调用了defaultWriteObject以后,再对比较关心的对象,一个一个写进流里面去。在readObject方法中,先调用ObjectInputStream对象的defaultReadObject方法,再用和写对象的一致的顺序,把对象读出来,强转成原来的类型即可。