web-dev-qa-db-ja.com

Javaメソッドを非推奨として宣言またはマークする方法

私の方法の1つを "deprecated" =もう使わないようにしたい。

それでも、私はそれを私のAPIに含めたいと思います。私はその方法を使っている人に「警告」を見せたいだけです。

どうすればそれを達成できますか?

264
Pavel Janicek

Methodに @Deprecated を使用してください。 javadocフィールドを明確にすることを忘れないでください。

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

@Deprecatedアノテーションと@deprecated JavaDocタグの両方を使用してください。

@deprecated JavaDocタグは文書化の目的で使用されます。

@Deprecatedアノテーションは、メソッドが廃止予定であることをコンパイラに指示します。これが、Sun/Oraclesの文書に書かれていることです。

@Deprecatedアノテーションを使用してクラス、メソッド、またはフィールドを非推奨にすると、コードがそのプログラム要素を使用するときにすべてのコンパイラが警告を発行するようになります。対照的に、Sunのコンパイラは現在発行していますが、すべてのコンパイラが常に@deprecatedJavadocタグに基づいて警告を発行するという保証はありません。他のコンパイラはそのような警告を発行しないかもしれません。したがって、@Deprecatedアノテーションを使用して警告を生成する方が、@deprecatedJavadocタグを使用するよりも移植性があります。

完全なドキュメントは APIを廃止する方法と時期 にあります。

85
ShaMan-H_Fel

ちょっとした説明が足りなかったので

このようなメソッドに@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) {
}

説明することを忘れないでください:

  1. なぜこの方法は推奨されなくなったのですか?。使用時にどのような問題が発生します。もしあれば、問題に関する議論へのリンクを提供してください。 (読みやすくするために行を分けることを忘れないでください。<br/>
  2. それが削除される時。 (ユーザーが古い方法に固執することを決心した場合、ユーザーがこの方法にどれだけ依存できるかを知らせます)
  3. 解決策を提供するまたはあなたが推奨する方法へのリンク{@link #setPurchasePrice()}
37
azerafati

できることは2つあります。

  1. メソッドに @Deprecated アノテーションを追加し、
  2. メソッドのjavadocに @deprecated タグを追加します。

あなたは両方をするべきです!

この問題について Javaのドキュメント を引用すると、

J2SE 5.0以降、@ Deprecatedアノテーションを使用してクラス、メソッド、またはフィールドを非推奨にしています。さらに、@ deprecatedのJavadocタグを使用して、代わりに使用するものを開発者に教えることができます。

アノテーションを使用すると、非推奨のクラス、メソッド、またはフィールドが使用されたときにJavaコンパイラが警告を生成します。非推奨のコンパイル単位が非推奨のクラス、メソッド、またはフィールドを使用する場合、コンパイラーは非推奨の警告を抑制します。これにより、警告を生成せずに従来のAPIを構築できます。

新しいAPIの使用方法を説明する適切なコメントを付けて、Javadocの@deprecatedタグを使用することを強くお勧めします。これにより、開発者は古いAPIから新しいAPIへの実用的な移行パスを確保できます。

35
Bohemian

あなたのメソッドに annotation@Deprecatedを使ってください、そしてあなたはそれをあなたのjavadocでも言及するべきです。

8
amit

@Deprecatedアノテーションを見てください。

4
jham