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

Option

Type

Default

Minimum number of branches

Number

2

Do not report pattern switch statements

Checkbox

false

Inspection Details

Available in:

IntelliJ IDEA 2023.3, Qodana for JVM 2023.3

Plugin:

Java, 233.SNAPSHOT

Last modified: 13 July 2023