查找序列化对象的串行版本 UID

2022-09-02 02:17:26

有没有办法确定序列化 Java 对象的生成?serialVersionUID

问题是我序列化了一个对象,而没有显式指定 .现在,反序列化过程抱怨类不兼容。但是,我没有以使其不兼容的方式更改类。因此,我假设在类中指定 它存储在对象数据中就足够了。为此,我需要从序列化数据中读取 。serialVersionUIDserialVersionUIDserialVersionUID


答案 1

这对我有用:

long serialVersionUID = ObjectStreamClass.lookup(YourObject.getClass()).getSerialVersionUID();

希望它也能帮助你。


答案 2

有一个简单的方法可以找到类的串行版本UID -

假设您有一个类,您忘记提及串行版本UID-

import java.io.Serializable;

public class TestSerializable implements Serializable {

}

就这么做——

serialver -classpath . TestSerializable

这打印-

static final long serialVersionUID = 5832063776451490808L;

serialver 是 JDK 附带的实用程序