1. 概要

このクイックチュートリアルでは、Javaで廃止されたAPIと、@Deprecatedアノテーションの使用方法について説明します。

2. @非推奨のアノテーション

プロジェクトが進化するにつれて、そのAPIは変化します。 時間の経過とともに、ユーザーに使用してほしくない特定のコンストラクター、フィールド、タイプ、またはメソッドがあります。

プロジェクトのAPIの下位互換性を損なう代わりに、これらの要素に@Deprecatedアノテーションのタグを付けることができます。

@Deprecatedは、マークの付いた要素を使用しないことを他の開発者に通知します。 @Deprecated アノテーションの横にJavadocを追加して、適切な動作を提供するより良い代替手段を説明することも一般的です。

public class Worker {
    /**
     * Calculate period between versions
     * @deprecated
     * This method is no longer acceptable to compute time between versions.
     * <p> Use {@link Utils#calculatePeriod(Machine)} instead.
     *
     * @param machine instance
     * @return computed time
     */
    @Deprecated
    public int calculate(Machine machine) {
        return machine.exportVersions().size() * 10;
    }
}

注釈付きのJava要素がコードのどこかで使用されている場合、コンパイラは非推奨のAPI警告のみを表示することに注意してください。 したがって、この場合は、calculateメソッドを呼び出すコードがあるかどうかのみが表示されます。

また、 Javadoc @deprecatedタグを使用して、ドキュメントで非推奨のステータスを通知することもできます。

3. Java9で追加されたオプションの属性

Java 9は、 @Deprecated アノテーションにいくつかのオプション属性を追加します:sinceおよびforRemoval

since 属性には、要素が非推奨になったバージョンを定義できる文字列が必要です。 デフォルト値は空の文字列です。

また、forRemovalbooleanであり、次のリリースで要素を削除するかどうかを指定できます。 デフォルト値はfalse:です。

public class Worker {
    /**
     * Calculate period between versions
     * @deprecated
     * This method is no longer acceptable to compute time between versions.
     * <p> Use {@link Utils#calculatePeriod(Machine)} instead.
     *
     * @param machine instance
     * @return computed time
     */
    @Deprecated(since = "4.5", forRemoval = true)
    public int calculate(Machine machine) {
        return machine.exportVersions().size() * 10;
    }
}

簡単に言えば、上記の使用法は、calculate がライブラリの4.5以降廃止されており、次のメジャーリリースで削除される予定であることを意味します。

コンパイラは、その値のメソッドを使用していることが検出された場合、より強力な警告を提供するため、これを追加すると便利です。

そして、IDE は、forRemoval = trueでマークされたメソッドの使用を検出するためのサポートをすでに提供しています。たとえば、IntelliJは、コードを赤い線で突き刺します黒の代わりに。

4. 結論

この簡単な記事では、 @Deprecated アノテーションとそのオプション属性を使用して、使用しないコードをマークする方法を説明しました。

例の完全なソースコードは、GitHubにあります。