我正在使用 javadoc 来记录我的公共枚举。我正在使用以下命令编译以下所有示例:
javac -Xdoclint:all LetsLearnJavadocXdoclint.java
如果我的枚举是这样的,它会生成一个 .class 文件,而不会发出任何警告。
/** Comment LetsLearnJavadocXdoclint. */
public enum LetsLearnJavadocXdoclint
{
/** Comment A. */A;
}
但如果我的枚举是这样的:
/** Comment LetsLearnJavadocXdoclint. */
public enum LetsLearnJavadocXdoclint
{
/** Comment A. */A{};
}
......我收到以下错误......
LetsLearnJavadocXdoclint.java:4: warning: no comment
/** Comment A. */A{};
^
1 warning
考虑到我需要将评论放在其他地方,我决定将评论放在每个可能的位置......
/** Comment LetsLearnJavadocXdoclint. */
public enum LetsLearnJavadocXdoclint
{
/** Comment A. */A/** Comment A. */{/** Comment A. */}/** Comment A. */;
}
……没有用……
LetsLearnJavadocXdoclint.java:4: warning: no comment
/** Comment A. */A/** Comment A. */{/** Comment A. */}/** Comment A. */;
^
1 warning
为了绝对、肯定地确定,我走的是逻辑的极端。
/** At this. */
public
/** point, I. */
enum
/** am beginning. */
LetsLearnJavadocXdoclint
/** to think. */
{
/** that I. */
A
/** am not. */
{
/** the one. */
}
/** who is. */
,
/** at fault. */
;
/** here. */
}
/** Next question. How do I report a bug to Java? */
......并且仍然得到......
$ javac -Xdoclint:all LetsLearnJavadocXdoclint.java
LetsLearnJavadocXdoclint.java:10: warning: no comment
A
^
1 warning
我错过了什么吗?
为了更好地解释我的意图,我的实际目标是让这个枚举使用单个方法实现一个接口,然后让我的枚举中的每个枚举值提供自己独特的方法实现。我一直在尝试使用 javadoc 记录它,但无济于事。这就是我想出这个最小例子的方式。
如果我不得不猜测,它可能与匿名类有关。我认为我包含的那些花括号正在创建某种形式的匿名类,并且它试图注释匿名类和枚举值。我之所以这样猜测是因为下面的例子。
如果我尝试这样做......
/** Comment LetsLearnJavadocXdoclint. */
public enum LetsLearnJavadocXdoclint
{
A{};
}
......我明白了......
LetsLearnJavadocXdoclint.java:4: warning: no comment
A{};
^
LetsLearnJavadocXdoclint.java:4: warning: no comment
A{};
^
2 warnings
2 条警告
......这立即让我想到匿名类。
显然,我不确定,但为什么会这样2 WARNINGS除非是因为有枚举类,以及它期望来自的匿名类?
最后,这是我的信息。
$ javac -version
javac 1.8.0_281
$ java -version
java version "1.8.0_281"
Java(TM) SE Runtime Environment (build 1.8.0_281-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.281-b09, mixed mode)