DefaultComesLast
Since Checkstyle 3.4
Description
Check that the
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
.
Properties
name | description | type | default value | since |
---|---|---|---|---|
skipIfLastAndSharedWithCase | Control whether to allow default along with case if they are not last. |
boolean | false |
7.7 |
Examples
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;
}
}
}
Example of Usage
Violation Messages
All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.
Package
com.puppycrawl.tools.checkstyle.checks.coding