在向类添加静态方法后,我的可序列化类没有被objectinputstream读入,这是预期的行为吗?在javadoc中,将静态方法添加到可序列化类的状态会导致不兼容吗?
答案 0 :(得分:4)
在Java对象序列化规范中,4.6部分:
流唯一标识符是类名,接口类名,方法和字段的64位散列。
...
对于按方法名称和签名排序的每个非私有方法:
- 方法的名称。
- 该方法的修饰符写为32位整数。
- 方法的描述符。
不,我无法弄清楚它是如何实际破坏序列化状态的兼容性的,但这就是为什么它要么值得避免默认的Java二进制序列化(例如Protocol Buffers )或总是自己声明serialVersionUid
。