switch ステートメントに置換できる if ステートメントを報告します。

この置換により、通常はコードがより簡潔かつ明瞭になります。

例:


  void test(String str) {
    if (str.equals("1")) {
      System.out.println(1);
    } else if (str.equals("2")) {
      System.out.println(2);
    } else if (str.equals("3")) {
      System.out.println(3);
    } else {
      System.out.println(4);
    }
  }

クイックフィックス適用後:


  void test(String str) {
    switch (str) {
      case "1" -> System.out.println(1);
      case "2" -> System.out.println(2);
      case "3" -> System.out.println(3);
      default -> System.out.println(4);
    }
  }
  

このインスペクションは、プロジェクトまたはモジュールの言語レベルが 7 以上の場合にのみ報告します。

報告対象とする if ステートメントの if 条件の最小分岐数を指定するには、「'if' 条件分岐の最小数」フィールドを使用します。 ターミナルの else 分岐 (if なし) はカウントされません。

プリミティブ型とボクシングした数値と文字の switch ステートメントを提案させるには、「数値の switch を提案する」オプションを使用します。

enum 定数の switch ステートメントを提案させるには、「列挙型の switch を提案する」オプションを使用します。

NullPointerException のみを導入できない switch ステートメントを提案するには、「null セーフな式でのみ提案する」オプションを使用します。