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:

switch (i) {
  case 1:
    break;
  case 2:
    break;
  default: // OK
    break;
}

switch (i) {
  case 1:
    break;
  case 2:
    break; // OK, no default
}

switch (i) {
  case 1:
    break;
  default: // violation, 'default' before 'case'
    break;
  case 2:
    break;
}

switch (i) {
  case 1:
  default: // violation, 'default' before 'case'
    break;
  case 2:
    break;
}
        

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:

switch (i) {
  case 1:
    break;
  case 2:
  default: // OK
    break;
  case 3:
    break;
}

switch (i) {
  case 1:
    break;
  default: // violation
  case 2:
    break;
}

// Switch rules are not subject to fall through, so this is still a violation:
switch (i) {
case 1 -> x = 9;
default -> x = 10; // violation
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

Parent Module

TreeWalker