case ラベルの数が少なすぎる switch ステートメントと式を報告し、それらを if および else if ステートメントに書き換えることを提案します。
例 (最小分岐数 == 3):
switch (expression) {
case "foo" -> foo();
case "bar" -> bar();
}
クイックフィックス適用後:
if ("foo".equals(expression)) {
foo();
} else if ("bar".equals(expression)) {
bar();
}
'default' 分岐のない完全な switch 式 (Java 14 以降) またはパターン switch ステートメント (Java 17 プレビュー) は報告されません。
これは、switch が if に変換される場合にコンパイル時の完全性確認が失われ、それが望ましくない場合があるためです。
インスペクションの構成:
最小限必要な case ラベルの数を指定するには、「最小分岐数」フィールドを使用します。
パターン分岐がある switch ステートメントと式を報告をしないようにするには、「パターンの switch ステートメントを報告しない」オプションを使用します。 例:
String result = switch(obj) {
case String str -> str.trim();
default -> "none";
};
instanceof ステートメントを使用するよりも、単一のパターン分岐を持つ switch を保持するほうが望ましい場合があります。