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

时间:2013-09-16 16:06:01

标签: java eclipse javadoc

我希望A_CONSTANT中的字符串成为ClassB的评论的一部分:

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 {

}

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

@see标记通过链接到ClassBA_CONSTANT中完成其工作。

然而,{@value ...}中的两次ClassB次尝试失败:当我将鼠标悬停在{@value ...}上时,我会看到文字A_CONSTANT部分,而不是ClassB的内容。< / p>

documentation告诉我使用以下符号,我认为我做过:{@value package.class#field}

this question的答案也建议使用上述表示法。

This与我的问题基本相同,但未得到回答。

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

我在Windows 7 x86上使用Eclipse Juno。

提前致谢。

修改

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

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

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

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

2 个答案:

答案 0 :(得分:8)

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

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创建了bug

答案 1 :(得分:-1)

在您链接到here的javadoc参考页面上,&#34;可以使用标签的位置&#34;它引用@value可以在字段上使用,但不能在类上使用。在B类中,javadoc在类上,这是无效的。可能eclipse严格遵循该评估,而javadoc.exe对于放置更宽松。