通过添加静态方法java来改变可序列化的类

时间:2012-03-23 21:22:29

标签: java serializable

在向类添加静态方法后,我的可序列化类没有被objectinputstream读入,这是预期的行为吗?在javadoc中,将静态方法添加到可序列化类的状态会导致不兼容吗?

1 个答案:

答案 0 :(得分:4)

在Java对象序列化规范中,4.6部分:

  

流唯一标识符是类名,接口类名,方法和字段的64位散列。

     

...

     

对于按方法名称和签名排序的每个非私有方法:

     
      
  • 方法的名称。
  •   
  • 该方法的修饰符写为32位整数。
  •   
  • 方法的描述符。
  •   

不,我无法弄清楚它是如何实际破坏序列化状态的兼容性的,但这就是为什么它要么值得避免默认的Java二进制序列化(例如Protocol Buffers总是自己声明serialVersionUid