java - 使用 serialVersionUID 还是禁止警告?

标签 java serialization serialversionuid

我想创建一个类,例如,扩展 HttpServlet?我的编译器警告我,我的类应该有一个 serialVersionUID。如果我知道这个对象永远不会被序列化,我应该定义它还是添加注释来禁止这些警告?

你会做什么,为什么?

最佳答案

我不知道 Java 的最佳实践,但我突然想到,如果你声称序列化永远不会发生,你可以添加一个 writeObject 方法来抛出。然后压制警告,知道它不可能适用于您。

否则将来有人可能会通过父类序列化您的对象,并以默认的序列化形式结束:

  • 该表单在您的代码的不同版本之间不兼容。
  • 您已取消显示这种情况的警告。

添加一个 ID 听起来像是一个麻烦,因为您真正想要做的不是序列化。期望调用者不序列化您的对象意味着您期望他们“知道”他们的 HttpServlet 何时属于您的类。拥有一个不能序列化的 Serializable 对象是对多态性的破坏,至少你能做的就是确保粗心的调用者知道它。

关于java - 使用 serialVersionUID 还是禁止警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/146715/

相关文章:

java - 如何使用java扫描仪和正则表达式删除输入文本中的标点符号,但不删除 "i.e."

scala - `Map[String, String]` 别名的 NotSerializableException

java - FindBugs - SE_BAD_FIELD 规则,为什么它会忽略 java.lang.Object?

java - 生成 serialVersionID 而不是 1L、2L、

java - 如何在 Jolt Transformation 中循环时展平对象数组?

java - 扩展变量和协变返回类型

使用 Java 打印服务打印 tiff 文件时出现 java.lang.OutOfMemoryError

java - ObjectInputStream/ObjectOutputStream 工作不正常

Java - 修改二进制序列化对象的serialVersionUID

java - SerialVersionUID Java - SerialVersionUID 如何工作?