Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.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类是否需要具有不同的唯一串行版本ID?_Java_Class_Serialization_Version - Fatal编程技术网

应用程序中的每个Java类是否需要具有不同的唯一串行版本ID?

应用程序中的每个Java类是否需要具有不同的唯一串行版本ID?,java,class,serialization,version,Java,Class,Serialization,Version,从我在线阅读的内容来看,为类创建串行版本ID似乎是一个很好的做法 我的问题是,在应用程序中,是否必须为每个类创建唯一的ID 或者我可以简单地为应用程序中的每个类分配以下ID吗 private static final long serialVersionUID=1不,特定类的ID是什么并不重要,它是该类的序列化格式版本。类名本身仍然是序列化的,所以它并不是在所有类中都必须是唯一的。(当然,你可能会发现,在其他方面,每个类都有不同的版本号会很有用。我想不出任何现成的方法,但那是另一回事。) 使用常

从我在线阅读的内容来看,为类创建串行版本ID似乎是一个很好的做法

我的问题是,在应用程序中,是否必须为每个类创建唯一的ID

或者我可以简单地为应用程序中的每个类分配以下ID吗


private static final long serialVersionUID=1

不,特定类的ID是什么并不重要,它是该类的序列化格式版本。类名本身仍然是序列化的,所以它并不是在所有类中都必须是唯一的。(当然,你可能会发现,在其他方面,每个类都有不同的版本号会很有用。我想不出任何现成的方法,但那是另一回事。)

使用常量值是可以的,但您确实需要确保在真正更改序列化格式(例如,通过添加字段)时更改它


请注意,我更喜欢使用这样的东西:向后/向前兼容更优雅:)

不,特定类的ID是什么并不重要,它是该类的序列化格式版本。类名本身仍然是序列化的,所以它并不是在所有类中都必须是唯一的。(当然,你可能会发现,在其他方面,每个类都有不同的版本号会很有用。我想不出任何现成的方法,但那是另一回事。)

使用常量值是可以的,但您确实需要确保在真正更改序列化格式(例如,通过添加字段)时更改它

请注意,我更喜欢使用更优雅的东西,具有向后/向前兼容性:)

  • 对于要序列化的类,您只需要一个串行版本ID,即大多数实现
    Serializable
  • ID是每个类的,如果两个类具有相同的ID,这不是问题
  • 只有当序列化实例有可能被不同版本的程序反序列化时,才有必要这样做。事实往往并非如此
      • 对于要序列化的类,您只需要一个串行版本ID,即大多数实现
        Serializable
      • ID是每个类的,如果两个类具有相同的ID,这不是问题
      • 只有当序列化实例有可能被不同版本的程序反序列化时,才有必要这样做。事实往往并非如此