Refactorable ссылка на параметр способ в 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} ).
я прочитала этой старый пост и еще несколько источников, но не смогли найти способ сделать это.
тут javadoc поддерживает его ?

4 ответов


из-за стирания Java имена аргументов метода эфемерны, они не являются частью определения статического класса. Итак,void foo(int p) изменено на void foo(int x) не считается рефакторингом, поскольку гарантируется, что он никак не повлияет на логику программы (если аргумент не перегружает поле класса).

поэтому в javadoc не может быть статической ссылки, которая идентифицирует аргумент метода. Сам факт, что слово после @param изменения при рефакторинге метод одолжение в среде IDE.


ваш IDE сможете изменить имя, если вы поместите его после @param (проверено в Eclipse), но не если вы ссылаетесь на него в другом месте в комментарии. С точки зрения языка, для этого нет причин. Почему бы просто не написать @param p {@link #field} is initialized using this value.?


вы пытались настроить параметры Eclipse javadoc? Окно - >Настройки, Java - >Компилятор - >Javadoc. Проверьте обработать комментарии Javadoc.

также, если вы проверяете Окно - >настройки - >Java - > редактор - >ввод - >Javadoc и комментарий регионы+добавить теги Javadoc он будет добавить appropiated теги javadoc. После того, как вы оба активировали Eclipse предупредит вас об ошибочных параметрах, и вы можете использовать ctrl1 для "быстрого исправления".


IntelliJ IDEA будет рефакторировать имя параметра в любом месте комментария JavaDoc, если вы поместите его в фигурные скобки, например {@param p}

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

кроме того, стирание типа Java (как указано в принятом ответе) не имеет ничего общего с областью имен переменных. Стирание типа-это компромисс, который разработчики Java реализовали для добавления Java-дженериков, но по-прежнему поддерживают обратную совместимость языка. Вся параметризация дженериков стирается - ни одна из них на самом деле доходит до байтового кода. Вот почему Java Generics настолько ограничены - вы не можете, например, сделать

T myT = new T();

Если T является параметризованным типом, потому что во время выполнения вся информация о T уже была удалена.