如何编写属性的Javadoc?

当我为javadoc写一个“简单”的POJO类的属性/成员时,我经常发现自己陷入困境,这个POJO类只有属性,getter和setter(DTO风格)….

1)为属性写javadoc
要么…
2)为getter写javadoc

如果我为该属性编写javadoc,则当我稍后通过代码完成访问POJO时,我的IDE(Eclipse)将自然地无法显示此内容。 而且没有标准的javadoc标签,可以让我将getter-javadoc链接到实际的javadoc属性。

一个例子:

public class SomeDomainClass { /** * The name of bla bla bla */ private String name; /** * @return INSERT SOME SMART JAVADOC TAG LINKING TO name's javadoc */ public String getName() { return name; } 

所以,基本上听听其他人如何让你的Eclipse IDE为你的getter显示javadoc属性描述,而不必复制javadoc注释会很有趣。

截至目前,我正在考虑让我的做法只logging获得者,而不是属性。 但它似乎不是最好的解决scheme…

您可以在生成Javadoc时使用私有成员(使用-private),然后使用@link链接到该字段属性。

 public class SomeDomainClass { /** * The name of bla bla bla */ private String name; /** * {@link SomeDomainClass#name} */ public String getName() { return name; } } 

或者,如果您不想为所有私有成员生成Javadoc,则可以使用一个约定来logging所有getter,并在setter上使用@link。

 public class SomeDomainClass { private String name; /** * The name of bla bla bla */ public String getName() { return name; } /** * {@link SomeDomainClass#getName} */ public void setName(String name) { this.name = name; } } 

我在Eclipse的自动完成function的帮助下完成了这两个任务。

首先,我logging下财产:

 /** * The {@link String} instance representing something. */ private String someString; 

然后,我复制并粘贴到getter:

 /** * The {@link String} instance representing something. */ public String getSomeString() { return someString; } 

在eclipse中,@return语句具有自动完成function – 所以,我添加了Gets,小写“t”,并复制了小写字母“t”的句子。 然后,我使用@return(与Eclipse自动完成),粘贴句子,然后在返回中大写T. 然后看起来像这样:

 /** * Gets the {@link String} instance representing something. * @return The {@link String} instance representing something. */ public String getSomeString() { return someString; } 

最后,我将这个文档复制到setter:

 /** * Gets the {@link String} instance representing something. * @return The {@link String} instance representing something. */ public void setSomeString(String someString) { this.someString = someString; } 

然后,我修改它,并使用Eclipse自动完成,您不仅可以获得@参数标记,而且还可以获取参数的名称:

 /** * Sets the {@link String} instance representing something. * @param someString The {@link String} instance representing something. */ public void setSomeString(String someString) { this.someString = someString; } 

然后,我完成了。 在我看来,这种模板化使得从长远来看更容易,不仅通过重复提醒自己财产是什么意思,而且如果你想添加更多的方面,它可以更容易地为getter和setter添加额外的注释效果(如不允许null属性,将string转换为大写等)。 我为此调查了一个Eclipse插件,但是我找不到JDT的适当扩展点,所以放弃了。

请注意,这个句子可能并不总是以T开头 – 这只是第一个字母在贴上时必须没有资金/重新注资。

龙目岛是这样的任务非常方便的图书馆。

 @Getter @Setter public class Example { /** * The account identifier (ie phone number, user name or email) to be identified for the account you're * requesting the name for */ private String name; } 

这就是你所需要的! @Getter注释为每个专用字段创build一个getter方法,并将javadoc附加到它。

PS :图书馆有许多很酷的function,你可能想结帐

我真的认为这是一个问题,官方的Javadoc指南并没有说明这一点。 C#可以通过使用Properties来优雅地解决这个问题(我不用C#编写代码,但我真的认为这是一个很好的function)。

但是我有一个猜测:如果你需要解释someString是什么的话,也许这是关于你的代码的一个“不好的小”。 这可能意味着你应该编写SomeClass来inputsomeString,所以你可以在SomeClass文档中解释someString是什么,只要getter / setter中的javadoc不需要。