【问题标题】:SerialVersionUID JavaDoc?SerialVersionUID JavaDoc?
【发布时间】:2017-03-17 09:21:35
【问题描述】:

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

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

【问题讨论】:

    标签: java documentation javadoc serialversionuid


    【解决方案1】:

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

    serialVersionUIDSerializable 对象的一部分(并非所有 java 类),并且在此对象的序列化/反序列化期间使用。

    作为一般规则。 始终检查API
    在这种情况下,Serializable API 位于底部!

    序列化运行时与每个可序列化类关联一个版本号,称为 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
     */
    

    【讨论】:

    • 所以你说它实际上不应该被记录,因为它已经有 javadoc 了?当我省略 javadoc 并将鼠标悬停在它上面时,它不显示任何内容:/
    • @NoodleofDeath 大多数 Java 开发人员都知道它的用途。您可以提供的最有用和最简单的文档可能是链接到 Serializablejavadocs 并保留它。当然,如果您愿意,您可以随意添加更多信息。
    • @NoodleofDeath 检查我的更新... 4castle 是对的...几乎人们会知道已经是什么...
    • 对您的 java 文档 Serializable#serialVersionUID 进行了小修改。
    • @see Serializable#serialVersionUID 让 doclint 窒息。原因很简单:Serializable 接口中没有名为serialVersionUID 的字段。我认为一个简单的@see Serializable 就可以做到。抄送@NoodleOfDeath
    猜你喜欢
    • 2017-06-01
    • 2014-07-04
    • 2012-03-10
    • 2017-10-05
    • 1970-01-01
    • 2012-02-08
    • 2012-10-06
    • 2017-09-14
    • 1970-01-01
    相关资源
    最近更新 更多