我在这里读了很多但没有找到答案。我遇到了 @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}
。
我哪里错了,伙计们?
答案 0 :(得分:3)
如果使用 Integer
而不是int
,则@value
未得到解决。
在您的示例中,常量START_VALUE
是包含值Integer
的{{1}}类型的对象。问题是,是否20000
支持自动装箱? Java Language Specification does not cover Javadoc comments。 Javadoc似乎没有正式的规范,只是@value
的以下简单描述没有回答这个问题:
如果使用 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)
答案 2 :(得分:0)
做一个干净的项目和eclipse重启:)它可能在这些之后运行良好:))