在 Java 中,静态和瞬态字段不被序列化。但是,我发现静态字段的初始化会导致生成的 serialVersionUID 发生变化。例如,static int MYINT = 3;
导致 serialVersionUID 更改。在这个例子中,这是有道理的,因为不同版本的类会得到不同的初始值。为什么任何初始化都会更改 serialVersionUID?例如,static String MYSTRING = System.getProperty("foo");
还会导致 serialVersionUID 更改。
具体来说,我的问题是为什么使用方法进行初始化会导致 serialVersionUID 发生变化。我遇到的问题是我添加了一个使用系统属性值(getProperty)初始化的新静态字段。该更改导致远程调用出现序列化异常。