最赞回答 / 伊泽先森4083105
String file="demo/dos.dat";//这里只是定义一个字符串DataOutputStream dos=new DataOutputStream(new FileOutputStream(file));//在括号里面创建了一个FileOutputStream,并给了DataOutputStream做了参数
2017-06-06
已采纳回答 / yeehom
这样写是出于兼容性考虑。旧版本的JDK中,ArrayList的实现有所不同,会对length字段进行序列化。而新版的JDK中,对优化了ArrayList的实现,不再序列化length字段。这个时候,如果去掉s.writeInt(size),那么新版本JDK序列化的对象,在旧版本中就无法正确读取,因为缺少了length字段。因此这种写法看起来多此一举,实际上却保证了兼容性。附上官方解释:defaultReadObject() and defaultWriteObject() should be the fi...
2017-06-04
如果父类没实现序列化接口,子类实现了序列化接口,当子类序列化时,父类不会被序列化,那么子类反序列化时,没法从文件中找到父类,就只能调用父类构造器初始化父类
2017-05-28