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