@see和@inheritDoc之间的区别的详细信息


87

我查看了JavaDoc参考,并且虽然了解了@see(各种链接)和{@inheritDoc}(超类JavaDoc注释的导出)之间的基本区别,但是我需要澄清事情的实际实现方式。

在Eclipse IDE中,当我为继承的方法(从接口或toString()重写,等等)选择“生成元素注释”时,它将创建以下注释

/* (non-Javadoc)
 * @see SomeClass#someMethod()
 */

如果需要生成JavaDoc,我应该保留它,替换@see{@inheritDoc},或将其变成真正的JavaDoc,例如:

/**
 * {@inheritDoc}
 */

当我这样做时,是否仍应保留class#method标志?

Answers:


142

首先,您应该删除原始的Eclipse模板,因为它只是嘈杂的垃圾。要么放入有意义的文档,要么什么都不放。但是,使用显而易见的IDE模板无用地重述只会使代码混乱。

其次,如果需要生成Javadoc,则必须使注释以开头/**。否则,它不是javadoc。

最后,如果您要覆盖,则应该使用@inheritDoc(假设您要添加到原始文档中,如@seh在注释中指出的,如果您只想复制原始文档,则不需要任何内容​​)。@see仅应真正用于引用其他相关方法。


75
@inheritDoc在打算添加到原始超类文档中时才应使用。如果您只是希望复制它,Javadoc将已经这样做,请注意,超类文档适用于子类的重写方法,因为该子类未提供其他文档。
seh 2012年

4
我生成了有和没有文档,但@inheritDoc没有发现任何区别。即使没有@inheritDoc,我也看到派生类的Javadoc被附加到基类上。
randominstanceOfLivingThing 2014年

我来这里是因为checkstyle抱怨“该方法似乎不是为扩展而设计的”。一个好主意可能是使用@inheritDoc并添加一些特定于实现的文档,例如,它如何实现/覆盖父方法,尤其是为什么要这样做。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.