繁体   English   中英

Java可序列化失败

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM