web-dev-qa-db-ja.com

JavaDocの非推奨またはJavaの注釈を使用する必要がありますか?

現時点では、Javaでコードを非推奨としてマークする方法は2つあります。

JavaDoc経由

/**
 * @deprecated
 */

または注釈として:

@Deprecated

これが私の問題です。Eclipseを使用しているときにメソッドを非推奨としてマークするとき、両方を宣言するのは少々多すぎます。そのうちの1つを使用したいだけです。

ただし、注釈を使用すると、コンパイラに実際に役立つ追加情報が提供されますか?

しかし、アノテーションを使用するだけでは、メソッドが非推奨である理由を述べることはできません。JavaDocでしかできません。

だから、そのうちの1つだけを使用できますか?それとも、本当に両方を指定することを本当に学ぶべきですか?

74
corgrath

両方を使用する必要があります。注釈を使用すると、非推奨のメソッドが使用されるたびにコンパイラが警告を表示でき、javadocがその理由を説明します。両方が重要です。

オラクルのJava注釈 チュートリアル

非推奨要素は、Javadoc @deprecatedタグを使用して文書化する必要があります...

71
Rawrgramming

馬の口 から:

注:Java言語仕様では、@ Deprecatedアノテーションでマークされたクラス、メソッド、またはフィールドが使用されている場合、コンパイラーは警告を発行する必要があります。 @deprecated Javadocタグでマークされたクラス、メソッド、またはフィールドにアクセスしたときに警告を発行するために、コンパイラはJava言語仕様では必要ありませんが、Sunコンパイラは現在そうしています。

したがって、基本的に、コンパイラの警告があることを保証したい場合は、注釈を使用する必要があります。また、APIデザイナーの息をのむような能力がないため、説明を行うためにjavadocタグも指定する必要があります。

個人的には、注釈は役に立たないと言って、それが修正されるまで省略されるべきだと思います。優れたコンパイラーまたはIDEもjavadocタグで警告を表示するからです。

37

両方を指定する必要があります。

注釈により、コンパイラーはそれを認識し、メソッドが使用されると警告をトリガーします。 JavaDoc属性により、開発者は使用を開始する前に知ることができます。

これらは2つの非常に異なるものです!

5
Dunaril

両方書いてください。 @Deprecatedアノテーションはコンパイラ用であり、@ deprecated JavaDocタグは、これが非推奨になった理由を知りたい人向けです。

例は次のようになります。

/**
* @deprecated We dont need this Method because ...
*/
@Deprecated
public void doStuff(){..}
5
Marcel

これは、優れたIDEで簡単に処理できます。

例えば、Eclipse Neonメソッドまたはフィールドに@deprecated javadocを作成すると、@ Deprecatedアノテーションが自動的に追加されます。

したがって、適切な説明を付けてjavadocを作成し、IDEに@Deprecatedアノテーションの追加を任せてください。ファイルを保存する瞬間に。

1
Inxsible