通知および警告

APIが非推奨になった場合は、開発者に通知する必要があります。非推奨APIによって、コードに問題が発生したり、これが後に削除された場合はランタイムにエラーが発生する可能性があります。

Javaコンパイラでは非推奨APIに関する警告が生成されます。警告に関する詳細な情報を生成するオプションがあり、また非推奨の警告を抑制することもできます。

コンパイラの非推奨警告

非推奨がforRemoval=falseである場合、Javaコンパイラでは「通常の非推奨警告」が生成されます。非推奨がforRemoval=trueである場合、コンパイラでは「削除警告」が生成されます。

2種類の警告は個別の-Xlintフラグ(-Xlint:deprecationおよび-Xlint:removal)によって制御されます。デフォルトではjavac -Xlint:removalオプションが有効であり、削除警告が表示されます。

また、警告は("–"を付けて)個別にオフにできます(-Xlint:-deprecationおよび-Xlint:-removal)。

通常の非推奨警告の例を次に示します。

$ javac src/example/DeprecationExample.java	
Note: src/example/DeprecationExample.java uses or overrides a deprecated API.	
Note: Recompile with -Xlint:deprecation for details.	

javac -Xlint:deprecationオプションを使用して、どのAPIが非推奨になっているかを示します。

$ javac -Xlint:deprecation src/example/DeprecationExample.java	
src/example/DeprecationExample.java:12: warning: [deprecation] getSelectedValues() in JList has been deprecated	
   Object[] values = jlist.getSelectedValues();	
                     ^	
1 warning	

削除警告の例を次に示します。

public class RemovalExample {
    public static void main(String[] args) {
        System.runFinalizersOnExit(true);
    }
}
$ javac RemovalExample.java
RemovalExample.java:3: warning: [removal] runFinalizersOnExit(boolean) in System 
has been deprecated and marked for removal
        System.runFinalizersOnExit(true);
              ^
1 warning
==========

非推奨警告の抑制

javac -Xlintオプションは、javacの特定の実行でコンパイルされたすべてのファイルの警告を制御します。今後は表示しない警告を生成するソース・コードの特定の場所を識別しているとします。@SuppressWarnings注釈を使用して、そのコードがコンパイルされるときはいつでも警告を抑制できます。非推奨APIを使用するクラス、メソッド、フィールドまたはローカル変数の宣言に@SuppressWarnings注釈を配置します。

@SuppressWarningsオプションを次に示します。
  • @SuppressWarnings("deprecation") — 通常の非推奨警告のみを抑制します。

  • @SuppressWarnings("removal") — 削除警告のみを抑制します。

  • @SuppressWarnings({"deprecation","removal"}) — 両方のタイプの警告を抑制します。

警告の抑制の例を次に示します。

   @SuppressWarnings("deprecation")
   Object[] values = jlist.getSelectedValues();

@SuppressWarnings注釈を使用すると、コマンドラインで警告が有効化されている場合も、この行の警告は発行されません。