通知および警告
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
注釈を使用すると、コマンドラインで警告が有効化されている場合も、この行の警告は発行されません。