6-2 transient及ArrayList源码分析
transient关键字:
如果第一节Student类中的stuage的声明 private int stuage改成private transient int stuage
则该元素不会进行jvm默认的序列化,且不代表不能进行序列化,可以自己完成这个元素的序列化
执行的结果 stuage=0
ArrayList是把数组的有效元素序列化,无效元素则无需序列化。
private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException{
s.defaultWriteObject();//把jvm能默认序列化的元素进行序列化操作
s.writeInt(stuage);//自己完成stuage的序列化
}
private void readObject(java.io.ObjectInputStream s) throws java.io.IOException,ClassNotFoundException{
s.defaultReadObject();//把jvm能默认反序列化的元素进行反序列化操作
this.stuage=s.readInt();//自己完成stuage的反序列化操作
}