27

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

Java コンパイラーは、些細な (しかし重大な) エラーを起こさないように、これらの状況について警告します。

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

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

何か案は?

4

5 に答える 5

40

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

@SuppressWarnings("fallthrough")
于 2009-02-27T08:49:21.800 に答える
4

注釈@SuppressWarnings( javadoc ) は探しているものですか?

例えば:

@SuppressWarnings("unchecked")
public void someMethod(...) {
    ...
}
于 2009-02-27T08:49:58.523 に答える
4

についての他の回答を完了するにはSuppressWarnings

@SuppressWarnings("fallthrough")

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

于 2009-02-27T08:56:06.247 に答える
1

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

于 2011-08-05T15:46:07.173 に答える
0
@SuppressWarnings("fallthrough")

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

@SuppressWarnings("fallthrough")
public void fallthroughTest(int i)
{
    switch (i)
    {
        case 1:
            // Execute both 1 and 2
        case 2:
            // Execute only 1
    }
}
于 2016-05-13T11:32:23.630 に答える