@Deprecated public class Betamax { ... }
上記の例で、@Deprecatedにはどのような影響がありますか?純粋に文書ですか?それとも、コンパイラがこのクラスをどのように扱うかについて何か変わっていますか?注釈は主にコードの文書化に関するものであるか、コンパイラによって強制されていますか?
@Deprecated public class Betamax { ... }
上記の例で、@Deprecatedにはどのような影響がありますか?純粋に文書ですか?それとも、コンパイラがこのクラスをどのように扱うかについて何か変わっていますか?注釈は主にコードの文書化に関するものであるか、コンパイラによって強制されていますか?
コンパイラは、いくつかの注釈(チェックの場合とクロークした場合のように)(@Override
など)を強制します。
しかし、最も有用な部分は、ライブラリが独自のアノテーション(@Entity
または@PersistenceAware
など)を提供できることです。そのうちのJava言語(JDKコア)は何も知らないものです。これは、言語特有の文法的な砂糖を言語に追加するようなものです。
@Deprecated
は文書です。また、古いJavaDoc @deprecated
タグのように、非推奨のメソッド(またはクラス)を使用すると、コンパイラの警告が生成されます。
純粋に文書化のためです。
何かを廃止予定とマークすると、生成されたJavadocを介して、このメソッド/クラスを使用すべきでないことをユーザーに示します。
日付(int年、int月、int日付): 廃止予定。 JDKバージョン1.1以降では、Calendar.set(年+1900, 月、日付)またはGregorianCalendar(年 + 1900、月、日付)に置き換えられました。
何かを非推奨とすると、このメソッドの代わりに使用する必要があることをユーザーに示すことをお勧めします。