问答详情
源自:6-2 transient及ArrayList源码分析

关于ObjectOutPutStream对象oos在调用writeObject(Student s)方法如何去调用Student重写的writeObject(ObjectOutPutStream oos)方法

ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("e:\\test\\objectSerializable.txt"));

Student s=new Student("张三",20);

/**

* 这个最后的oos.writeObject(s);在实现的过程中,

* 会通过反射在s中寻找方法名为writeObject,

* 参数为ObjectOutputStream的方法,

* 如果找到了就会调用s.writeObject(oos)的方法;

* 没找到的话会使用默认的实现,

* 这种情况下你的这个类中的age字段由于是transient的就会丢失掉。

* 反过来读取对象的时候也是这样的。

*/

oos.writeObject(s);


提问者:给大佬递茶 2018-11-06 11:21

个回答

  • qq_想飞上蓝天的猪_0
    2018-11-13 15:52:06
    已采纳

    通过反射会去调用你所要序列化的对象是否有对应名称的方法,来决定是否采用默认的