本文主要是介绍java反序列化serialVersionUID不一致问题及解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《java反序列化serialVersionUID不一致问题及解决》文章主要讨论了在Java中序列化和反序列化过程中遇到的问题,特别是当实体类的`serialVersionUID`发生变化或未设置时,...
前言
serialVersionUID变化后,反序列化失败(实体类的serialVersionUID被修改或没有设置serialVersionUID,实体类属性有变更)
记录遇到的问题,不保证正确。
一、序列化、反序列化

二、解决方法
实现ObjectInputStream类,重写readClassDescriptor方法
class DecompressibleInputStream extends ObjectInputStream {
public DecompressibleInputStream(InputStream in) throws IOException {
super(in);
}
@Override
protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException {
ObjectStreamClwww.chinasem.cnass resultClassDescriptor = sujavascriptper.readClassDescriptor();
Class localClass;
try {
localClass = Class.forName(resultClassDescriptor.getName());
} catch (ClassNotFoundException e) {
return resultClasphpsDescriptor;
}
ObjectStreamClass localClassDescriptor = ObjectStreamClass.lookup(localClass);
if (localClassDescriptor != null) {
final long localSUID = localClassDescriptor.getSerialVersionUID();
final long streamSUID = resultClassDescriptor.getSerialVersionUID();
if (streamSUID != localSUID) {
try {
Field suid = repythonsultClassDescriptor.getClass().getDeclaredField("suid");
suid.setAccessible(true);
suid.set(resultClassDescriptor, localSUID);
} catch (Exception e) {
e.China编程printStackTrace();
}
}
}
return resultClassDescriptor;
}
}- 使用:

总结
这篇关于java反序列化serialVersionUID不一致问题及解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!