The requirement for a final default clause is defensive programming. This clause should either take appropriate action or contain a suitable comment as to why no action is taken.
The following code snippet illustrates this rule:
switch (state) { // Non-Compliant - must have a default case
case 0:
case 1:
System.out.println("0 or 1!");
break;
}
switch (state) {
default: // Non-Compliant - must be last for better readability
throw new IllegalStateException();
case 0:
case 1:
System.out.println("0 or 1!");
break;
}
switch (state) {
case 0:
case 1:
System.out.println("0 or 1!");
break;
default: // Compliant
throw new IllegalStateException();