2016-11-03 29 views
2

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

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

回答

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 
*/ 
+0

所以你说它应该实际上没有记录任何因为它已经有javadoc了吗?当我省略javadoc和mouseover时,它不会显示任何内容:/ –

+2

@NoodleofDeath大多数Java开发人员都知道它的用途。可能最有用和最简单的文档是链接到['Serializable'](http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html)javadocs并离开它。当然,如果你愿意,你可以自由添加更多信息。 – 4castle

+0

@NoodleofDeath检查我的更新... 4castle是正确的...几乎人们会知道什么已经... –