2

在向我的 Java 程序添加文档时,我意识到大多数类都需要serialVersionUID声明一个常量属性。我应该如何准确记录这个属性?如果我使用默认和生成的串行版本 UID,我是否会以不同的方式记录它?

/**
 * What goes here? "A unique serial version identifier"
 */
private static final long serialVersionUID = -8922096951749901688L;
4

1 回答 1

2

首先,serialVersionUID您提供的评论似乎正确但不必要

serialVersionUID作为对象的一部分(并非所有 java 类)是必需的, 并且Serializable对象的序列化/反序列化期间使用。

作为基本规则。在这种情况下,始终检查API , API,在底部!
Serializable

序列化运行时与每个可序列化类关联一个版本号,称为 serialVersionUID,在反序列化期间使用该版本号来验证序列化对象的发送方和接收方是否已加载与序列化兼容的该对象的类。如果接收者为对象加载了一个类,该对象的 serialVersionUID 与相应发送者的类不同,则反序列化将导致 InvalidClassException。可序列化的类可以通过声明一个名为“serialVersionUID”的字段来显式声明自己的serialVersionUID,该字段必须是静态的、最终的和long类型:

ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;

所以你说它实际上不应该被记录,因为它已经有 javadoc 了?当我省略 javadoc 并将鼠标悬停在它上面时,它不显示任何内容:/

它是Serializable界面的一部分,所以恕我直言,没有必要......无论如何,您可以使用自己的评论+@see注释。像这样的东西(不确定是否可行,现在无法创建 javadoc ......)

/**
 * A unique serial version identifier
 * @see Serializable#serialVersionUID
 */
于 2016-11-03T17:15:27.667 回答