首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何编写属性的Javadoc?

如何编写属性的Javadoc?
EN

Stack Overflow用户
提问于 2010-02-16 21:28:43
回答 3查看 98.6K关注 0票数 95

我经常发现自己在为一个“简单的”POJO类的属性/成员编写javadoc时左右为难,这个类只包含属性、getter和setter(DTO风格)……

1)为属性编写javadoc

或者..。

2)为getter编写javadoc

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

举个例子:

代码语言:javascript
复制
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注释,这将是一件有趣的事情。

到目前为止,我正在考虑让我的实践只记录getter,而不是属性。但这似乎不是最好的解决方案。

EN

回答 3

Stack Overflow用户

发布于 2010-02-16 21:30:13

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

代码语言:javascript
复制
public class SomeDomainClass {
    /**
     * The name of bla bla bla
     */
    private String name;

    /**
     * {@link SomeDomainClass#name}
     */
    public String getName() {
        return name;
    }
}

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

代码语言:javascript
复制
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;
    }
}
票数 77
EN

Stack Overflow用户

发布于 2010-02-16 22:10:42

在Eclipse的自动完成功能的帮助下,我做到了这两点。

首先,我记录该属性:

代码语言:javascript
复制
/**
 * The {@link String} instance representing something.
 */
private String someString;

然后,我将此代码复制并粘贴到getter中:

代码语言:javascript
复制
/**
 * The {@link String} instance representing something.
 */
public String getSomeString() {
    return someString;
}

在eclipse中,@return语句有一个自动补全-所以,我添加了单词Gets,小写"t",并复制了小写"t“的句子。然后我使用@return (带有Eclipse自动完成),粘贴句子,然后在return中大写T。然后它看起来像这样:

代码语言:javascript
复制
/**
 * Gets the {@link String} instance representing something.
 * @return The {@link String} instance representing something.
 */
public String getSomeString() {
    return someString;
}

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

代码语言:javascript
复制
/**
 * Gets the {@link String} instance representing something.
 * @return The {@link String} instance representing something.
 */
public void setSomeString(String someString) {
    this.someString = someString;
}

然后,我修改了它,使用Eclipse自动完成功能,您不仅可以获得@param标记,还可以获得参数的名称:

代码语言:javascript
复制
/**
 * 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添加额外的注释。为此,我研究了制作一个Eclipse插件,但是我找不到合适的JDT扩展点,所以我放弃了。

请注意,句子可能并不总是以T开头-它只是粘贴时必须不大写/重写的第一个字母。

票数 3
EN

Stack Overflow用户

发布于 2012-06-01 19:11:08

我真的认为这是一个问题,官方Javadoc guide并没有对此做任何说明。C#可以通过使用属性以优雅的方式解决这个问题(我不是用C#编写代码,但我真的认为这是一个很好的特性)。

但我有一个猜测:如果你需要解释someString是什么,也许它是关于你的代码的一个坏的小‘’。这可能意味着您应该将SomeClass编写为someString类型,这样您就可以在SomeClass文档中解释什么是someString,这样就不需要在SomeClass/setter中使用javadoc了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2273170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档