应用程序中的每个Java类是否需要具有不同的唯一串行版本ID?
从我在线阅读的内容来看,为类创建串行版本ID似乎是一个很好的做法 我的问题是,在应用程序中,是否必须为每个类创建唯一的ID 或者我可以简单地为应用程序中的每个类分配以下ID吗应用程序中的每个Java类是否需要具有不同的唯一串行版本ID?,java,class,serialization,version,Java,Class,Serialization,Version,从我在线阅读的内容来看,为类创建串行版本ID似乎是一个很好的做法 我的问题是,在应用程序中,是否必须为每个类创建唯一的ID 或者我可以简单地为应用程序中的每个类分配以下ID吗 private static final long serialVersionUID=1不,特定类的ID是什么并不重要,它是该类的序列化格式版本。类名本身仍然是序列化的,所以它并不是在所有类中都必须是唯一的。(当然,你可能会发现,在其他方面,每个类都有不同的版本号会很有用。我想不出任何现成的方法,但那是另一回事。) 使用常
private static final long serialVersionUID=1代码>不,特定类的ID是什么并不重要,它是该类的序列化格式版本。类名本身仍然是序列化的,所以它并不是在所有类中都必须是唯一的。(当然,你可能会发现,在其他方面,每个类都有不同的版本号会很有用。我想不出任何现成的方法,但那是另一回事。)
使用常量值是可以的,但您确实需要确保在真正更改序列化格式(例如,通过添加字段)时更改它
请注意,我更喜欢使用这样的东西:向后/向前兼容更优雅:)不,特定类的ID是什么并不重要,它是该类的序列化格式版本。类名本身仍然是序列化的,所以它并不是在所有类中都必须是唯一的。(当然,你可能会发现,在其他方面,每个类都有不同的版本号会很有用。我想不出任何现成的方法,但那是另一回事。)
使用常量值是可以的,但您确实需要确保在真正更改序列化格式(例如,通过添加字段)时更改它
请注意,我更喜欢使用更优雅的东西,具有向后/向前兼容性:)
- 对于要序列化的类,您只需要一个串行版本ID,即大多数实现
Serializable
- ID是每个类的,如果两个类具有相同的ID,这不是问题
- 只有当序列化实例有可能被不同版本的程序反序列化时,才有必要这样做。事实往往并非如此
- 对于要序列化的类,您只需要一个串行版本ID,即大多数实现
Serializable
- ID是每个类的,如果两个类具有相同的ID,这不是问题
- 只有当序列化实例有可能被不同版本的程序反序列化时,才有必要这样做。事实往往并非如此