在scjp 1.6上看到这样一个例子,class dog中包含class collar,collar没有implement序列化并且被标transient. 现在要把dog对象序列化并且保存collar的变量size. 这时候需要用到签名,在class dog里分别写
private void writeObject(ObjectOutputStream os){
os.defaultWriteObject()
/等等/
}
private void readObect(ObjectInputStream is){
is.defaultReadObject()
/等等/
}
我的问题是当我在main()中分别用到ObjectOutputStream和ObjectInputStream的时候,是否需要把main()的ObjectOutputStream对象和InputObjectStream对象的名字和class dog中private方法里的argument保持一致呢?简洁的说是不是也得让main()里头的ObjectOutputStream对象必须也叫os,ObjectInputStream对象必须也叫is。
谢谢。
------解决方案--------------------
不需要。其实你没理解writeObject和readObect的作用
http://freish.iteye.com/admin/blogs/1007362