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

关于重写writeObject方法需要传入一个ObjectOutpuStream参数,但调用这个方法却实际传入一个Stu对象?

private void writeObject(java.io.ObjectOutputStream s)
            throws java.io.IOException{
        s.defaultWriteObject();//把虚拟机能默认虚拟化的元素虚拟化
	s.writeInt(stuage);//自己完成stuage的序列化
}
oos.writeObject(stu);

第一段代码相当于重写了writeObject方法,问题是oos对象调用这个方法传入的是一个Student类型的对象stu,而重写的方法里面的需要传入参数是ObjectOutputStream s。这两个参数的类型都不一样,为什么会这样?

提问者:慕粉4241372 2017-03-08 10:43

个回答

  • 鲁国人
    2017-08-14 12:45:29

    重写了writeObject方法传入的确实是一个ObjectOutputStream类的对象s,这个s调用方法时需要传入一个Student类的对象stu

  • 历飞雨
    2017-03-08 19:08:57

    还有你理解的参数类型不对吧!writeObject()方法指的是对某个对象进行序列化,这个对象多了去了

    而上面的那个方法是指对该对象的元素能否进行序列化,做的一个区分,分为能进行默认序列化的和单独进行序列化的。这个方法不是说要对某个对象进行序列化,和你说的writeObject()方法不一样