Since Checkstyle 3.4
default
is after all the
cases in a switch
statement.
Rationale: Java allows default
anywhere
within the switch
statement. But it is
more readable if it comes after the last case
.
name | description | type | default value | since |
---|---|---|---|---|
skipIfLastAndSharedWithCase | Control whether to allow default along with case if they are not last. |
boolean | false |
7.7 |
To configure the check:
<module name="Checker"> <module name="TreeWalker"> <module name="DefaultComesLast"/> </module> </module>
Example:
public class Example1 { public void method() { int i = 2, x; switch (i) { case 1: break; case 2: break; default: break; } switch (i) { case 1: break; case 2: break; } switch (i) { case 1: break; default: // violation, 'Default should be last label in the switch' break; case 2: break; } switch (i) { case 1: break; default: case 2: break; } switch (i) { case 1: x = 9; default: x = 10; // violation, 'Default should be last label in the switch' case 2: x = 32; } } }
To configure the check to allow default label to be not last if it is shared with case:
<module name="Checker"> <module name="TreeWalker"> <module name="DefaultComesLast"> <property name="skipIfLastAndSharedWithCase" value="true"/> </module> </module> </module>
Example:
public class Example2 { public void method() { int i = 2, x; switch (i) { case 1: break; case 2: break; default: break; } switch (i) { case 1: break; case 2: break; } switch (i) { case 1: break; default: // violation, 'Default should be last label in the switch' break; case 2: break; } switch (i) { case 1: break; default: // violation, 'Default should be last label in the case group' case 2: break; } switch (i) { case 1: x = 9; default: x = 10; // violation, 'Default should be last label in the switch' case 2: x = 32; } } }
All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.
com.puppycrawl.tools.checkstyle.checks.coding