web-dev-qa-db-ja.com

特定の関数のJavaコンパイラ警告を抑制する方法

フォールスルーを回避するために、switchステートメントでbreakを使用するように常に教えられています。

Javaコンパイラは、これらの状況について警告し、些細な(ただし、抜本的な)エラーを発生させないようにします。

ただし、私は機能としてケースフォールスルーを使用しました(ここで説明する必要はありませんが、非常に洗練されたソリューションを提供します)。

しかし、コンパイラーは大量の警告を吐き出し、私が知る必要のある警告を覆い隠す可能性があります。すべてのフォールスルー警告を無視するようにコンパイラーを変更する方法を知っていますが、フォールスルーが発生するつもりのなかった場所を見逃さないように、これをメソッドごとに実装したいと思います。

何か案は?

24
Ron Tuffin

あなたが本当にこれを行う必要があり、間違いを犯していないと確信している場合は、 @ SuppressWarningsアノテーション を確認してください。あなたの場合にはあなたが必要だと思います

@SuppressWarnings("fallthrough")
37
starblue

注釈@SuppressWarningsjavadoc )何を探していますか?

例えば:

@SuppressWarnings("unchecked")
public void someMethod(...) {
    ...
}
4
Romain Linsolas

SuppressWarnings に関する他の回答を完了するには:

_@SuppressWarnings("fallthrough")
_

コンパイラレベルですべてのフォールスルー警告を抑制しようとするのは悪いことです。説明したように、警告を通過する必要があるケースは明確に識別されます。したがって、コードで明示的に記述する必要があります(オプションのコメント付きの@SuppressWarnings("fallthrough")アノテーションは歓迎されます)。そうすることで、コードのどこかでブレークを本当に忘れた場合でも、フォールスルー警告が表示されます。

4
Nicolas

スイッチの代わりに「if」ステートメントの構造を作成できます。視覚的に満足できるものではないかもしれませんが、抑圧を警告するものでもありません。

1
Maxwell
@SuppressWarnings("fallthrough")

Javaは常にCスタイルのswitchステートメントに従っており、以下のケースで単純にコードを実行して実行したくない場合を除き、明示的にスイッチから抜け出す必要があります。これはもちろん危険な場合があり、この種のエラーを追跡することは非常に困難です。次の例では、ケース1に中断がありません。

@SuppressWarnings("fallthrough")
public void fallthroughTest(int i)
{
    switch (i)
    {
        case 1:
            // Execute both 1 and 2
        case 2:
            // Execute only 1
    }
}
0
Jay