[英]Java Serializable failure
我有一个名为Expression的类,我试图使用以下load()/ save()函数进行序列化。 在对代码和Expression类进行了一些更改之后,它过去可以正常工作,对in.readObject()
的调用将引发ClassCastException
。 错误消息是: java.lang.ClassCastException:无法将java.lang.String强制转换为java.io.ObjectStreamClass
对我来说,将二进制数据存储为String感觉很不好。 尝试使用更稳定的方法来存储ObjectOutputStream的二进制输出。 如果您真的想使用字符串格式的方法,请尝试使用Base64编码,这始终是安全的。
我可能会看到的问题是,您自己将serialUID定义为静态常量:
private static final long serialVersionUID = 3L;
此UID用于确定类路径中的类是否与输入对象的类兼容。 因此,我怀疑您在不更改serialVersionUID的情况下修改了该类。 这使ObjectInputStream认为是兼容的,但是您仍在使用旧数据。 尝试清除旧数据,然后重新调用save()
重新启动。
您确定Input
也可以序列化吗? 该类的UID没有损坏?
似乎可序列化不喜欢类成员字段中的NULL值。 如果我确保所有类成员都有实际的内存,它不会失败。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.