Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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中的serialVersionUID必须是静态的、最终的、长类型的? 为什么必须声明为静态、final和long变量类型 这个SerialVersionId是唯一的吗 当两个或多个类包含相同的serialVersionUID时会发生什么?在这种情况下,这个versionUID如何对字节数组进行反序列化有用_Java_Serialization_Static_Final_Serialversionuid - Fatal编程技术网

为什么java中的serialVersionUID必须是静态的、最终的、长类型的? 为什么必须声明为静态、final和long变量类型 这个SerialVersionId是唯一的吗 当两个或多个类包含相同的serialVersionUID时会发生什么?在这种情况下,这个versionUID如何对字节数组进行反序列化有用

为什么java中的serialVersionUID必须是静态的、最终的、长类型的? 为什么必须声明为静态、final和long变量类型 这个SerialVersionId是唯一的吗 当两个或多个类包含相同的serialVersionUID时会发生什么?在这种情况下,这个versionUID如何对字节数组进行反序列化有用,java,serialization,static,final,serialversionuid,Java,Serialization,Static,Final,Serialversionuid,它是静态的,因为它属于类,而不是实例 它是最终版本,因为它不会更改(对于该版本的类)。只有当有人对类进行影响序列化方式的更改时,它才会更改 这是一个漫长的过程,因为数据类型易于序列化,适合于紧凑的空间,并且具有比任何人都可能需要的更多的值 它不必是独一无二的。如果一个类的两个版本具有相同的serialversionUID,这意味着对该类没有影响其序列化方式的更改,则该类的这两个版本可以接受相同的序列化格式 不管两个类是否具有相同的serialVersionUID,它不会在类之间使用,它只用于检查

它是静态的,因为它属于类,而不是实例

它是最终版本,因为它不会更改(对于该版本的类)。只有当有人对类进行影响序列化方式的更改时,它才会更改

这是一个漫长的过程,因为数据类型易于序列化,适合于紧凑的空间,并且具有比任何人都可能需要的更多的值

它不必是独一无二的。如果一个类的两个版本具有相同的serialversionUID,这意味着对该类没有影响其序列化方式的更改,则该类的这两个版本可以接受相同的序列化格式

不管两个类是否具有相同的serialVersionUID,它不会在类之间使用,它只用于检查类的序列化版本是否与该类的版本兼容

  • 为什么serialVersionUID必须声明为静态、final和long类型
  • 因为他这么说

  • serialVersionUID是否需要唯一
  • 否。它仅区分类的不同版本(例如,在不同时间点编译)。如果您正在编写一个新类,可以设置
    serialVersionUID=1L没有任何问题

  • 当两个或多个类包含相同的serialVersionUID时会发生什么?在这种情况下,serialVersionUID如何对字节数组进行反序列化
  • 两个或多个类可以声明相同的serialVersionUID。实际的wire格式包含完全限定的类名,因此不存在歧义


    如果正在加载的数据中的SerialVersionId与您的类的SerialVersionId不匹配,将抛出一个
    InvalidClassException

    一个问题中有三个问题。请专注于一个。如果是第一个,你在寻找什么样的答案?它必须是静态final,并且类型为long。为什么long更容易序列化?为什么不应该是int或short之类的?你能帮我了解一下吗?@user1391703:这正进入“因为规范这么说”的领域。还可以看到Eric Lippert对数字的出色反应?只是在谷歌上搜索到了同样的情况,但没有任何想法。。请给我解释一下。@Rabbit“可能是因为他们认为数字会在双字边界上对齐”,尽管这在序列化中不是真的,这一切都无关紧要。