フォールスルーを回避するために、switchステートメントでbreakを使用するように常に教えられています。
Javaコンパイラは、これらの状況について警告し、些細な(ただし、抜本的な)エラーを発生させないようにします。
ただし、私は機能としてケースフォールスルーを使用しました(ここで説明する必要はありませんが、非常に洗練されたソリューションを提供します)。
しかし、コンパイラーは大量の警告を吐き出し、私が知る必要のある警告を覆い隠す可能性があります。すべてのフォールスルー警告を無視するようにコンパイラーを変更する方法を知っていますが、フォールスルーが発生するつもりのなかった場所を見逃さないように、これをメソッドごとに実装したいと思います。
何か案は?
あなたが本当にこれを行う必要があり、間違いを犯していないと確信している場合は、 @ SuppressWarningsアノテーション を確認してください。あなたの場合にはあなたが必要だと思います
@SuppressWarnings("fallthrough")
注釈@SuppressWarnings
( javadoc )何を探していますか?
例えば:
@SuppressWarnings("unchecked")
public void someMethod(...) {
...
}
SuppressWarnings
に関する他の回答を完了するには:
_@SuppressWarnings("fallthrough")
_
コンパイラレベルですべてのフォールスルー警告を抑制しようとするのは悪いことです。説明したように、警告を通過する必要があるケースは明確に識別されます。したがって、コードで明示的に記述する必要があります(オプションのコメント付きの@SuppressWarnings("fallthrough")
アノテーションは歓迎されます)。そうすることで、コードのどこかでブレークを本当に忘れた場合でも、フォールスルー警告が表示されます。
スイッチの代わりに「if」ステートメントの構造を作成できます。視覚的に満足できるものではないかもしれませんが、抑圧を警告するものでもありません。
@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
}
}