当前位置: 首页 > 知识库问答 >
问题:

对于内部/嵌套类构造函数,什么是适当的“@link”或“@see”javadoc标记?

司寇高峯
2023-03-14

我在让“@link”和“@see”标记为内部/嵌套类的构造函数工作时遇到问题,希望这里的人能提供帮助。这个简短的示例类在第25行给出了javadoc警告,其中引用了“Layer()”文档前面几行中的“@link”和(等效的)“@see”标记。

package bogus;
import javax.swing.JPanel;
public class LayeredPlot extends JPanel {
  /**
   * Constructor for the plot.
   */
  public LayeredPlot() {
  }
  public static class Layer {
    private String name;
    /**
     * Construct a default layer with a default name. This method calls
     * {@link LayeredPlot.Layer#Layer(String)} OR calls == JAVADOC WARNING
     * {@link #Layer(String)} OR calls                  == JAVADOC WARNING
     * {@link Layer#Layer(String)}                      == JAVADOC WARNING
     * with a null name to perform the construction.
     * The constructor for the layer can be found
     * {@link LayeredPlot#LayeredPlot() here}.          == JAVADOC Okay!
     *
     * @see LayeredPlot.Layer#Layer(String)             == JAVADOC WARNING
     * @see #Layer(String)                              == JAVADOC WARNING
     * @see Layer#Layer(String)                         == JAVADOC WARNING
     * @see LayeredPlot#LayeredPlot()                   == JAVADOC Okay!
     */
    public Layer() {    // Line 25: javadoc warnings reference this line
      this(null);
    }
    /**
     * Construct a layer with the specified name.
     *
     * @param name The desired name for the layer within the plot.
     */
    public Layer(String name) {
      this.name = name;
    }
  }
}

警告(3个表示“@see”,3个表示“@link”)都说:无法在伪造中找到层(字符串)。分层图。图层

请注意:所有其他javadoc都按预期工作(包括内部类方法和我在本例中对LayeredPlot自身构造函数的引用)。

如果您对内部/嵌套类构造函数的正确javadoc标记有任何建议,我们将不胜感激<谢谢。

共有2个答案

国胤
2023-03-14

如果您对内部名称进行了范围界定,则需要在#标记的两侧对其进行完全的范围界定。例如:

@see LayeredPlot.Layer#LayeredPlot.Layer(String)
元胡媚
2023-03-14

对于Java8或更早版本,没有合适的方法来实现这一点,因为bug JDK-80311625只在Java9中修复。

解决方法是对类和参数使用完全限定名:

{@link bogus.LayeredPlot.Layer#LayeredPlot.Layer(java.lang.String)}

但这不是一个语法上有效的成员名称,因此有几个工具会抱怨(doclint、checkstyle)。

 类似资料:
  • 问题内容: 有人可以告诉我javadoc 和之间的区别吗? 或更确切地说,什么时候使用它们? 问题答案: 该官方指南上这是很清楚的。 功能上的差异是: 是一个内联链接,可以放置在您喜欢的任何位置 创建自己的部分 我认为,最好在描述中使用字面意义上的类,字段,构造函数或方法名称。用户将能够单击您所链接内容的javadoc。 我在2种情况下使用注释: 某些内容非常相关,但说明中未提及。 我在描述中多次

  • 问题内容: 如何正确使用Javadoc? 我的意图是拥有一个带有抽象方法的抽象类。这些方法具有javadoc注释。现在,如果我扩展了抽象类,则将覆盖这些方法并要使用。 但对于所有的参数,可以如用于该链接似乎没有工作时。Eclipse仍然抱怨。 那么我该如何使用呢? 问题答案: 为了包括超类的文档,您不应使用not 。 然后,您将获得超类的文档。您可以添加它,并且可以覆盖诸如和所需的东西。

  • 问题内容: 在JavaScript中,嵌套函数非常有用:闭包,私有方法以及您拥有的东西。 什么是嵌套PHP函数?有人使用它们吗? 这是我做的小调查 问题答案: 基本上没有,我一直将其视为解析器的副作用。 伊兰·加珀林(Eran Galperin)误认为这些功能是某种私有的,只是在运行之前才声明它们。它们也不是私有范围的,尽管确实延迟了,但它们确实污染了全球范围。作为回调,外部回调仍然只能被调用一次

  • 问题内容: 这个问题是关于Java的有趣行为的:在某些情况下,它为嵌套类生成了其他(不是默认的)构造函数。 这个问题也与Java使用该奇怪的构造函数生成的奇怪的匿名类有关。 考虑以下代码: 这将打印: 好。接下来,让构造函数私有: 再次运行程序。接收: 还可以 但是现在,让我们以这种方式修改方法(添加类创建的新实例): 然后输入变为: 这是什么: a.TestNested $ A(a.TestNe

  • 我不确定我是否过度工程化了,但我正在考虑创建一个枚举,其中包含一个枚举列表作为它的值,从中我可以得到它的值。 我无法确定枚举的类型,以便正确地将值数组筛选到正确的枚举。例如,我可以用轻松地获得US枚举。我遇到的困难是从该数组中获得正确的值。我尝试比较名称,

  • 我有两个类:Date和Person Person有Date类的两个属性 案例1 类是与Person类分开的类。我有这段代码正常工作: 案例2:内部类(赋值要求) 我把作为Person的私有内部类 现在,上面的构造函数代码不再工作了。以下是错误消息: 说明资源路径位置类型由于某些中间构造函数调用人员,类型Person的封闭实例不可用。java/Wk03_Ch10_文件IO_Ch13_接口/Wk03_