如何在Javadoc中使用@link链接到枚举值

147

使用 Javadoc 1.5,我无法创建指向枚举值的 @link。

我想创建一个这样的枚举:

public enum Planet { 

/**
* MERCURY is a fun place.
*/
MERCURY, 

/**
* VENUS is more fun.
*/
VENUS, 

/**
* But nothing beats the Earth.
*/
EARTH,

/**
* Others we know nothing about.
*/ 
OTHERS
}

然后使用类似这样的链接来参考地球的Javadoc:

{@link Planet.EARTH}

我也尝试了{@link Planet#EARTH}样式,但没有成功。

请问有人知道这到底可不可行?

3个回答

239

# 样式对我有效:

{@link Planet#EARTH}

关键在于必须导入Planet包,或者完全限定Planet - 即:

{@link com.yourpackage.Planet#EARTH}

正如sfussenegger所指出的那样,Eclipse会为您处理导入。 - aperkins
谢谢两位的回答,都很有帮助!我最终使用了完全限定的引用才让它正常工作。有时编译器的输出并不能真正帮助我们确定问题所在... - Christer Fahlgren
3
如果枚举类型被定义在A类中,而另一个类B要在javadoc中引用该枚举类型的值,应该如何操作?我发现在OpenJDK 1.6 update 24 javadoc中,无论是A.Planet#EARTH还是A#Planet#EARTH都无法正常工作,但是在eclipse中可以使用A.Planet#EARTH的形式找到声明。 - Stevo Slavić
不幸的是,如果您有一个枚举的静态导入,这种方法就行不通了。至少在IntelliJ IDEA中,除非您使用带有包等完全限定的枚举名称,否则无法在javadoc中使用静态导入的枚举。 - dhblah
然而,这在静态导入中不起作用。即使Intellij Idea(2023.2.2)建议这样做,我也不能简单地使用{@link EARTH},因为它之后会变成红色。 - undefined

7
我正在使用Eclipse进行检查,但是...
{@link Planet#EARTH}

样式似乎可行。然而,我通常更喜欢

@see Planet#EARTH

无论如何。不确定Eclipse使用什么来生成Javadoc,但我正在使用JDK6。可能@see对您有帮助。

4
我喜欢使用@see,但有时需要处理特殊情况。例如,我的订单有一个isWithdrawn()方法,我明确说明@return true如果此订单的状态等于OrderStatus#WITHDRAWN,否则返回false - corsiKa

2
只要它被导入了,就可以链接它(但是这样做会让导入变得混乱-哪些是在代码中使用的,哪些是在javadoc中使用的?我喜欢只使用完全限定名称)。但是,是的,Eclipse可以处理所有这些并且很标准。
{@link Planet#EARTH}

运行正常。

如果您使用Eclipse,按下Ctrl + Shift + O(在PC上)或Cmd + Shift + O(在Mac上)可以自动调整您的导入(这意味着如果您有未使用的额外导入,则会将其删除,同时添加任何您需要的导入)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接