2016-07-13 4 views
6

Как сделать ссылку в javadoc параметру метода, чтобы ссылка могла быть реорганизована?
Например:Refactorable ссылка на параметр метода в javadoc

public class A { 

    private int field; 

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

    } 
}  

Если переименовать параметр р в приведенном выше коде, я хочу

"... используя значение р"

текст, чтобы изменить соответствующим образом (так же, как изменится поле переименования {@link #field}).
Я прочитал this старое сообщение и еще несколько источников, но не смог найти способ сделать это.
Поддерживает ли javadoc это?

+0

В Q & A вы очень четко указали на состояния, что в JavaDoc нет такой функции.Почему этот вопрос не должен быть закрыт как дубликат? –

ответ

1

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

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

1

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

Кроме того, если вы проверяете Window-> Настройки-> Java-> editor-> Typing-> Javadoc и комментарий регионов + Добавить Javadoc теги он добавит appropiated теги JavaDoc. Как только вы активируете Eclipse, вы будете предупреждать вас о ошибочных параметрах, и вы можете использовать ctrl , чтобы «быстро исправить» его.

+2

Спасибо за ответы. Эти варианты полезны. Они не помогают в вопросе, который я поднял. – c0der

2

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

+0

Благодарим вас за ответ. Да, я знаю, что он будет работать для '@param p и некоторого текста'. Это не работает для 'some text @param p' – c0der

1

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

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

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

T myT = new T(); 

если T является параметрическим типом, потому что во время выполнения всей информация о Т уже стера.

Смежные вопросы