Как объявить или пометить метод Java как устаревший?

Я бы хотел, чтобы один из моих методов "устарел" = больше не использовался.

Но все же я хотел бы иметь его в своем API. Я просто хочу показать "предупреждение" всем, кто использует этот метод.

Как я могу это достичь?

Ответ 1

Использовать метод @Deprecated по методу. Не забывайте про пояснение поля javadoc:

/**
 * Does some thing in old style.
 *
 * @deprecated use {@link #new()} instead.  
 */
@Deprecated
public void old() {
// ...
}

Ответ 2

Используйте как аннотацию @Deprecated, так и тег JavaDoc @Deprecated.

Тег @Deprecated JavaDoc используется для целей документирования.

Аннотация @Deprecated указывает компилятору, что метод устарел. Вот что он говорит в документе Sun/Oracles по этому вопросу:

Использование аннотации @Deprecated для обесценивания класса, метода или поля гарантирует, что все компиляторы выдадут предупреждения, когда код использует этот программный элемент. Напротив, нет никакой гарантии, что все компиляторы всегда выдадут предупреждения на основе тега @Deprecated Javadoc, хотя в настоящее время это делают компиляторы Sun. Другие компиляторы не могут выдавать такие предупреждения. Таким образом, использование аннотации @Deprecated для генерации предупреждений является более переносимым, основанным на теге @Deprecated Javadoc.

Полный документ можно найти в Как и когда отказаться от API

Ответ 3

Есть две вещи, которые вы можете сделать:

  • Добавить @Deprecated аннотацию к методу и
  • Добавьте тег @Deprecated в javadoc метода

Вы должны сделать как!

Указание java documentation на эту тему:

Начиная с J2SE 5.0 вы отказываетесь от класса, метода или поля с помощью аннотации @Deprecated. Кроме того, вы можете использовать @deprecated тег Javadoc, чтобы сказать разработчикам, что использовать вместо этого.

Использование аннотации заставляет компилятор Java генерировать предупреждения, когда используется устаревший класс, метод или поле. Компилятор подавляет предупреждения об отказе, если устаревший блок компиляции использует устаревший класс, метод или поле. Это позволяет вам создавать устаревшие API без создания предупреждений.

Настоятельно рекомендуется использовать тег Javadoc @deprecated с соответствующими комментариями, объясняющими, как использовать новый API. Это гарантирует, что разработчики будут иметь приемлемый путь миграции от старого API к новому API

Ответ 4

поскольку отсутствовали некоторые незначительные объяснения

Используйте @Deprecated аннотацию к методу, подобному этому

/**
 * @param baseprice
 * 
 * @deprecated  reason this method is deprecated </br>
 *              {will be removed in next version} </br>
 *              use {@link #setPurchasePrice()} instead like this: 
 * 
 * <blockquote>
 * <pre>
 * getProduct().setPurchasePrice(200) 
 * </pre></blockquote>
 * 
 */
@Deprecated
public void setBaseprice(int baseprice) {
}

не забудьте объяснить:

  • Почему этот метод больше не рекомендуется, помните, чтобы выделить строку для удобства чтения </br>
  • Когда он будет удален (пусть ваши пользователи знают, насколько они все еще могут полагаться на этот метод, если они решили придерживаться старого пути)
  • Предоставьте решение или ссылку на рекомендуемый метод {@link #setPurchasePrice()}

Ответ 5

Используйте annotation @Deprecated для вашего метода, и вы также должны указать его в своих javadocs.

Ответ 6

Взгляните на аннотацию @Deprecated.