如何解决当serialVersionUID不匹配时,如何读取序列化数据?
我将ArrayList中的数据写入流:
public class CustomHoliday implements Serializable {
String name;
int day;
int month;
}
ArrayList<CustomHoliday> allCustomHolidays;
FileOutputStream fileOutputStream = context.openFileOutput(filename,Context.MODE_PRIVATE);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(allCustomHolidays);
当我尝试阅读时
FileInputStream fileInputStream = context.openFileInput(filename);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
allCustomHolidays = (ArrayList<CustomHoliday>) objectInputStream.readObject();
我收到此异常:
java.io.InvalidClassException:CustomHoliday;本地类不兼容:流classdesc serialVersionUID = -8822681925170234017,本地类serialVersionUID = -8039319578138251384
是的,我知道,我应该在CustomHoliday中声明一个serialVersionUID
。但是现在为时已晚。我尝试将serialVersionUID
设置为Exception中的那个,但这仅在该设备上起作用。在其他情况下,保存的serialVersionUID
似乎有所不同。
即使我可以事先从流中读取serialVersionUID
,由于serialVersionUID
是final
,我也无法在CustomHoliday中动态设置它。
有没有办法告诉Java:“不用担心serialVersionUID,就可以了!”
如果没有,还有其他方法可以读取流中的数据吗?这只是一个String和每个CustomHoliday实例两个int。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。