2016-11-03 7 views
2

При добавлении документации к моей программе Java я понимаю, что для большинства классов требуется объявить постоянное свойство serialVersionUID. Как именно я должен документировать это свойство? И я документирую его по-другому, если бы использовал стандартную или сгенерированную версию UID с последовательной версией?SerialVersionUID JavaDoc?

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

ответ

2

Прежде всего, serialVersionUID комментарий вы предоставили кажется правильным но ненужным.

serialVersionUID требуется как часть Serializable объекта (не все классы Java) и используется во время сериализации/десериализации этого объекта.

Как правило. ВСЕГДА ПРОВЕРЬТЕ API
в данном случае, Serializable API, внизу!

сериализации во время выполнения ассоциирует с каждым сериализуемым классом номер версии, называемым serialVersionUID, который используется во время десериализации, чтобы проверить, что отправитель и получатель сериализованного объекта загрузили классы для этого объекта, которые совместимы в отношении для сериализации. Если получатель загрузил класс для объекта с другим идентификатором serialVersionUID, чем класс соответствующего класса отправителя, то десериализация приведет к исключению InvalidClassException. Сериализуемая класс может объявить свой собственный serialVersionUID явно объявить поле с именем «serialVersionUID», который должен быть статическим, окончательным и типа длинной:

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 прав ... почти люди будут знать, что уже ... –