Java : @SuppressWarnings (アノテーション) - API使用例
SuppressWarnings (Java SE 20 & JDK 20) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様のおともにどうぞ。
概要
@SuppressWarnings アノテーションは、コンパイル時の警告を抑止するために使います。
指定できるパラメータは4つあります。
ただし、安易に使うことはおすすめしません。
基本的には @SuppressWarnings は使わず、警告が出ないようにコードを修正するのがよいでしょう。
さらに詳細が知りたいかたは、下記の Java 言語仕様もご参照ください。(英語になります)
unchecked
警告が出る例です。
public class Foo {
// 注意:意図的に List<E> の型パラメータ <E> を省略しています。
public void m(List list) {
list.add("aaa");
}
}
//> javac -Xlint:unchecked Foo.java
//Foo.java:8: 警告: [unchecked] raw型Listのメンバーとしてのadd(E)への無検査呼出しです
// list.add("aaa");
// ^
// Eが型変数の場合:
// インタフェース Listで宣言されているE extends Object
//警告1個
警告を抑止する例です。
public class Bar {
@SuppressWarnings("unchecked")
public void m(List list) {
list.add("aaa");
}
}
//> javac -Xlint:unchecked Bar.java
// <エラー、警告なし>
deprecation
警告が出る例です。
@Deprecated
public class Sample {
}
public class Foo {
public void m() {
final var sample = new Sample();
System.out.println(sample);
}
}
//> javac -Xlint:deprecation Foo.java
//Foo.java:5: 警告: [deprecation] 名前のないパッケージのSampleは推奨されません
// final var sample = new Sample();
// ^
//警告1個
警告を抑止する例です。
public class Bar {
@SuppressWarnings("deprecation")
public void m() {
final var sample = new Sample();
System.out.println(sample);
}
}
//> javac -Xlint:deprecation Bar.java
// <エラー、警告なし>
removal
警告が出る例です。
@Deprecated(forRemoval = true)
public class Sample {
}
public class Foo {
public void m() {
final var sample = new Sample();
System.out.println(sample);
}
}
//> javac Foo.java
//Foo.java:5: 警告: [removal] 名前のないパッケージのSampleは推奨されておらず、削除用にマークされています
// final var sample = new Sample();
// ^
//警告1個
警告を抑止する例です。
public class Bar {
@SuppressWarnings("removal")
public void m() {
final var sample = new Sample();
System.out.println(sample);
}
}
//> javac Bar.java
// <エラー、警告なし>
preview
警告が出る例です。
public class Foo {
public void m() {
final var t = Thread.ofVirtual();
System.out.println(t);
}
}
//> javac --enable-preview --release 20 -Xlint:preview Foo.java
//Foo.java:5: 警告: [preview] ofVirtual()はプレビューAPIであり、今後のリリースで削除される可能性があります。
// final var t = Thread.ofVirtual();
// ^
//警告1個
警告を抑止する例です。
public class Bar {
@SuppressWarnings("preview")
public void m() {
final var t = Thread.ofVirtual();
System.out.println(t);
}
}
//> javac --enable-preview --release 20 -Xlint:preview Bar.java
// <エラー、警告なし>