Eclipse中的javadoc @value注释问题

时间:2017-11-24 21:38:26

标签: java eclipse javadoc

我在这里读了很多但没有找到答案。我遇到了 @value Javadoc注释的问题。

IDE:Eclipse Oxygen.1a版本(4.7.1a)

如果我将它放在String变量上,它就可以正常工作,但如果变量是Integer那么一切都很糟糕。

以下是变量并排的代码:

/**
 * Default delimiter. {@value #DEFAULT_LIST_SEPARATOR}
 */
public final static String DEFAULT_LIST_SEPARATOR = ",";

/**
 * Default int value. {@value #START_VALUE}
 */
public final static Integer START_VALUE = 20000;

并且第一个变量描述正确显示,但对于另一个,我只看到{@value #START_VALUE}

我哪里错了,伙计们?

3 个答案:

答案 0 :(得分:3)

如果使用 Integer而不是int ,则@value未得到解决。

在您的示例中,常量START_VALUE是包含值Integer的{​​{1}}类型的对象。问题是,是否20000支持自动装箱? Java Language Specification does not cover Javadoc comments。 Javadoc似乎没有正式的规范,只是@value的以下简单描述没有回答这个问题:

  

Displays constant values.

如果使用 Oracle Java SDK的Javadoc工具生成HTML 作为事实上的标准,则@value允许@value,但不适用于int类型。 Oracle Java 8和Java 9开发工具包的Javadoc工具报告了同样的错误:

Integer

如果使用error: value does not refer to a constant * Default int value. {@value #START_VALUE} ^ 代替{@value},则错误变为{@value #START_VALUE}

让我们看一下以下情况:

error: {@value} not allowed here

在Eclipse public class JavadocValue { /** STRING = {@value} */ public final static String STRING = "lorem ipsum"; /** STRING_CONCATENATION = {@value} */ public final static String STRING_CONCATENATION = "lorem" + " ipsum"; /** STRING_COMPUTATION = {@value} */ public final static String STRING_COMPUTATION = System.getProperty("path.separator"); /** INT = {@value} */ public final static int INT = 42; /** INT_COMPUTATION = {@value} */ public final static int INT_COMPUTATION = (20 + 1) * 2; /** INTEGER = {@value} */ public final static Integer INTEGER = 42; /** INTEGER_COMPUTATION = {@value} */ public final static Integer INTEGER_COMPUTATION = Integer.valueOf("42"); /** ENUM = {@value} */ public final static MyEnum ENUM = MyEnum.VALUE_B; public enum MyEnum { VALUE_A, VALUE_B }; } 已解决,因为它在 Javadoc工具

@value

结论:使用STRING = "lorem ipsum" STRING_CONCATENATION = "lorem ipsum" STRING_COMPUTATION = [error/unresolved] INT = 42 INT_COMPUTATION = 42 INTEGER = [error/unresolved] INTEGER_COMPUTATION = [error/unresolved] ENUM = [error/unresolved] 表示基本类型的常量或仅@value 的常量。

答案 1 :(得分:0)

使用上面的Intellij IDEA 2017.2.6代码可以正常工作: enter image description here

所以,它可能只是eclipse bug。

答案 2 :(得分:0)

做一个干净的项目和eclipse重启:)它可能在这些之后运行良好:))