可重复引用javadoc中的方法参数

时间:2016-07-13 08:41:24

标签: java eclipse refactoring javadoc

如何在javadoc中对方法参数进行引用,以便可以重构引用?
例如:

public class A {

    private int field;

    /**
     * @param p 
     * {@link #field} is initialized using the value of p.
     */
    void foo(int p)
    {
        //...

    }
}       

如果我在上面的代码中重命名参数p,我想要

  

" ...使用p"

的值

相应更改的文本(正如重命名字段将更改{@link #field})。 我读过this旧帖子,还有更多来源,但找不到办法。
javadoc是否支持它?

4 个答案:

答案 0 :(得分:3)

如果您将名称放在@param之后(在Eclipse中测试过),您的IDE将能够重构该名称,但如果您在评论中的其他位置引用它,则无法重构该名称。从语言的角度来看,没有理由这样做。为什么不写@param p {@link #field} is initialized using this value.

答案 1 :(得分:2)

由于Java擦除,方法参数名称是短暂的,它们不是静态类定义的一部分。因此,void foo(int p)被更改为void foo(int x)不被视为重构,因为它保证它不会以任何方式影响程序的逻辑(除非参数重载类字段)。

因此在javadoc中不能有标识方法参数的静态链接。当您重构该方法时,@param之后的单词发生变化这一事实本身就是IDE提供的一种优势。

答案 2 :(得分:2)

IntelliJ IDEA将在JavaDoc注释中的任何位置重构参数名称,只要将其放在大括号中,例如{@param p}

FormsModule

此外,Java的类型擦除(在接受的响应中提到)与变量名的范围无关。类型擦除是Java设计人员为了添加Java Generics而实现的折衷,但仍然保持语言向后兼容。泛型的所有参数化都被删除 - 它实际上都不是字节代码。这就是为什么Java Generics如此有限 - 你不能做例如

/**
 * @param p 
 * {@link #field} is initialized using the value of {@param p}.
 */

如果T是参数化类型,因为在运行时,所有关于T的信息都已被删除。

答案 3 :(得分:1)

您是否尝试过配置eclipse javadoc首选项? Window->偏好设置,Java->编译器> Javadoc 。检查 处理Javadoc评论 选项。

此外,如果您选中 Window->偏好设置> Java->编辑器 - >打字 - > Javadoc和评论区域+ 添加Javadoc标记 它将添加适当的javadoc标记。一旦你有两个激活的Eclipse将警告你有关错误的参数,你可以使用 ctrl 1 来“快速修复”它。