Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过添加静态方法改变可序列化类,java_Java_Serializable - Fatal编程技术网

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

通过添加静态方法改变可序列化类,java,java,serializable,Java,Serializable,在向类添加静态方法后,我的可序列化类没有被objectinputstream读入,这是预期的行为吗?在javadoc中,它在何处声明向可序列化类添加静态方法会导致不兼容?在Java对象序列化规范中,部分: 流唯一标识符是类名、接口类名、方法和字段的64位哈希 对于按方法名称和签名排序的每个非私有方法: 方法的名称 方法的修饰符写为32位整数 方法的描述符 不,我也不知道它实际上如何破坏序列化状态的兼容性,但这就是为什么它要么值得避免默认的Java二进制序列化(例如for),要么总是自己声明

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

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

流唯一标识符是类名、接口类名、方法和字段的64位哈希

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

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

不,我也不知道它实际上如何破坏序列化状态的兼容性,但这就是为什么它要么值得避免默认的Java二进制序列化(例如for),要么总是自己声明一个
serialVersionUid

在Java对象序列化规范中,第节:

流唯一标识符是类名、接口类名、方法和字段的64位哈希

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

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

不,我也不知道它实际上是如何破坏序列化状态的兼容性的,但这就是为什么它或者值得避免默认的Java二进制序列化(例如for),或者总是自己声明一个
serialVersionUid

如果没有更多信息,就不可能真正诊断您的问题。请发布一些代码,并详细描述一下这个问题。线程“main”java.io.InvalidClassException中的异常:本地类不兼容:stream classdesc serialVersionUID=2421933566308851961,本地类serialVersionUID=6969314805631849195,我所做的只是添加静态方法,添加旧的serialVersionUID修复了这个问题谢谢。这当然意味着Jon Skeet解决了你的问题,这并不奇怪。如果没有更多信息,就不可能真正诊断你的问题。请发布一些代码,并详细描述一下这个问题。线程“main”java.io.InvalidClassException中的异常:本地类不兼容:stream classdesc serialVersionUID=2421933566308851961,本地类serialVersionUID=6969314805631849195,我所做的只是添加静态方法,添加旧的serialVersionUID修复了这个问题谢谢。这当然意味着Jon Skeet解决了你的问题,这一点也不奇怪。