为什么 Eclipse 在另一个类中使用时不能处理@value?

2022-09-03 15:39:22

我希望字符串 from 成为以下注释的一部分:A_CONSTANTClassB

package my.stuff;

public class ClassA {
    /** Shows the string just fine: {@value} */
    public static final String A_CONSTANT = "show this in comments";
}

package my.stuff;

/**
 * Does not give me the string: {@value my.stuff.ClassA#A_CONSTANT}
 * Neither does this: {@value ClassA#A_CONSTANT}
 * 
 * @see my.stuff.ClassA#A_CONSTANT
 */
public class ClassB {

}

in向我显示将鼠标悬停在常量名称上的字符串内容;没关系。{@value}ClassA

此外,该标记通过链接到 来完成其工作。@seeClassBA_CONSTANT

然而,两次尝试都失败了:我看到的是文字部分,而不是悬停时的内容。{@value ...}ClassB{@value ...}A_CONSTANTClassB

文档告诉我使用以下符号,我认为我做到了:.{@value package.class#field}

这个问题的答案也建议使用上面的符号。

基本上与我的问题相同,但没有得到回答。

如何在其他类的注释中显示常量的字符串内容?

我在Windows 7 x86上使用Eclipse Juno。

提前致谢。

编辑:

运行 javadoc 时.exe我的项目解析为正确的字符串。{@value my.stuff.ClassA#A_CONSTANT}

这就是为什么我稍微改变了这个问题:

为什么 Eclipse 在鼠标悬停时不显示常量的字符串,而 javadoc.exe 没有问题?

Mouse over in Eclipse: Constant's string is not shown


答案 1

这似乎是Eclipse中的一个错误。从文档中稍微修改示例:

public class TestClass {
  /**
   * The value of this constant is {@value}.
   */
  // In Eclipse this shows: The value of this constant is "<script>".
  public static final String SCRIPT_START = "<script>";
  /**
   * Evaluates the script starting with {@value TestClass#SCRIPT_START}.
   */
  // In Eclipse this shows: Evaluates the script starting with {@value TestClass#SCRIPT_START}.
  public void test1() {
  /**
   * Evaluates the script starting with {@value #SCRIPT_START}.
   */
  // In Eclipse this shows: Evaluates the script starting with "<script>".
  public void test2() {
  }
}

为此,Eclipse创建了一个错误


答案 2

在您链接到此处的javadoc参考页面上,在“可以使用标签的位置”下,它引用了@value可以在字段上使用,但不能在类上使用。在类 B 中,javadoc 位于该类上,该类无效。eclipse可能严格遵循该评估,而javadoc.exe在放置方面更宽松。


推荐