日期:2014-05-20  浏览次数:20737 次

请教java序列化签名的问题。
在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