1. 概要

このチュートリアルでは、 @SuppressWarnings Javaアノテーションで機能するさまざまな警告名を見ていきます。これにより、コンパイラの警告を抑制できます。 これらの警告名を使用すると、特定の警告を抑制できます。 使用可能な警告名は、IDEまたはJavaコンパイラによって異なります。 Eclipse IDEは、この記事のリファレンスです。

2. 警告名

以下は、@SuppressWarningsアノテーションで使用可能な有効な警告名のリストです。

  • all :これはすべての警告を抑制する一種のワイルドカードです
  • ボクシング:ボクシング/アンボクシング操作に関連する警告を抑制します
  • unused :未使用のコードの警告を抑制します
  • cast :オブジェクトキャスト操作に関連する警告を抑制します
  • 非推奨:非推奨のクラスやメソッドなどの非推奨に関連する警告を抑制します
  • 制限:推奨または禁止されている参照の使用に関連する警告を抑制します
  • dep-ann :非推奨の注釈に関連する警告を抑制します
  • fallthrough switchステートメントにbreakステートメントがないことに関連する警告を抑制します
  • finally :返されないfinallyブロックに関連する警告を抑制します
  • hidden :変数を非表示にするローカルに関連する警告を抑制します
  • incomplete-switch switch ステートメントのエントリの欠落に関連する警告を抑制します( enum の場合)
  • nls :非nls文字列リテラルに関連する警告を抑制します
  • null null分析に関連する警告を抑制します
  • serial serialVersionUID フィールドの欠落に関連する警告を抑制します。これは通常、Serializableクラスにあります。
  • static-access :誤った静的変数アクセスに関連する警告を抑制します
  • synthetic-access :内部クラスからの最適化されていないアクセスに関連する警告を抑制します
  • unchecked :チェックされていない操作に関連する警告を抑制します
  • unqualified-field-access :非修飾フィールドアクセスに関連する警告を抑制します
  • javadoc :Javadocに関連する警告を抑制します
  • rawtypes は、raw型の使用に関連する警告を抑制します
  • resource は、タイプCloseableのリソースの使用に関連する警告を抑制します。
  • super は、superを呼び出さずにメソッドをオーバーライドすることに関連する警告を抑制します
  • sync-override は、synchronizedメソッドをオーバーライドするときにsynchronizeが欠落していることによる警告を抑制します

3. 警告名の使用

このセクションでは、さまざまな警告名の使用例を示します。

3.1. @SuppressWarnings( “未使用”)

以下の例では、警告名はメソッド内のunusedValの警告を抑制します。

@SuppressWarnings("unused")
void suppressUnusedWarning() {
    int usedVal = 5;
    int unusedVal = 10;  // no warning here
    List<Integer> list = new ArrayList<>();
    list.add(usedVal);
}

3.2. @SuppressWarnings(“ deprecated”)

以下の例では、警告名は@deprecatedメソッドの使用に関する警告を抑制します。

@SuppressWarnings("deprecated")
void suppressDeprecatedWarning() {
    ClassWithSuppressWarningsNames cls = new ClassWithSuppressWarningsNames();
    cls.deprecatedMethod(); // no warning here
}

@Deprecated
String deprecatedMethod() {
    return "deprecated method";
}

3.3. @SuppressWarnings( “fallthrough”)

以下の例では、警告名により、欠落している break ステートメントの警告が抑制されています。ここにコメントアウトして、警告が表示される場所を示しています。

@SuppressWarnings("fallthrough")
String suppressFallthroughWarning() {
    int day = 5;
    switch (day) {
        case 5:
            return "This is day 5";
//          break; // no warning here
        case 10:
            return "This is day 10";
//          break; // no warning here   
        default:
            return "This default day";
    }
}

3.4. @SuppressWarnings( “serial”)

この警告名はクラスレベルで配置されます。 以下の例では、警告名は、 SerializableクラスでserialVersionUID (コメントアウト済み)が欠落しているという警告を抑制します。

@SuppressWarnings("serial")
public class ClassWithSuppressWarningsNames implements Serializable {
//    private static final long serialVersionUID = -1166032307853492833L; // no warning even though this is commented

4. 複数の警告名を組み合わせる

@SuppressWarnings アノテーションは、 String の配列を想定しているため、複数の警告名を組み合わせることができます。

@SuppressWarnings({"serial", "unchecked"})

5. 結論

この記事では、有効な@SuppressWarnings警告名のリストを提供します。 いつものように、このチュートリアルに示されているすべてのコードサンプルは、GitHubから入手できます。