Inspectopedia Help

Minimum 'switch' branches

Reports switch statements and expressions with too few case labels, and suggests rewriting them as if and else if statements.

Example (minimum branches == 3):

switch (expression) { case "foo" -> foo(); case "bar" -> bar(); }

After the quick-fix is applied:

if ("foo".equals(expression)) { foo(); } else if ("bar".equals(expression)) { bar(); }

Exhaustive switch expressions (Java 14+) or pattern switch statements (Java 17 preview) without the 'default' branch are not reported. That's because compile-time exhaustiveness check will be lost when the switch is converted to if which might be undesired.

Configure the inspection:

Use the Minimum number of branches field to specify the minimum expected number of case labels.

Use the Do not report pattern switch statements option to avoid reporting switch statements and expressions that have pattern branches. E.g.:

String result = switch(obj) { case String str -> str.trim(); default -> "none"; };

It might be preferred to keep the switch even with a single pattern branch, rather than using the instanceof statement.

Inspection options

Here you can find the description of settings available for the Minimum 'switch' branches inspection, and the reference of their default values.

Minimum number of branches

2

Do not report pattern switch statements

Not selected

Inspection Details

By default bundled with:

IntelliJ IDEA 2024.1, Qodana for JVM 2024.1,

Can be installed with plugin:

Java, 241.16690

Last modified: 29 April 2024