This is not possible with a switch statement in Java. Check for null before the switch:
if (i == null) {
doSomething0();
} else {
switch (i) {
case 1:
// ...
break;
}
}
You can't use arbitrary objects in switch statements*. The reason that the compiler doesn't complain about switch (i) where i is an Integer is because Java auto-unboxes the Integer to an int. As assylias already said, the unboxing will throw a NullPointerException when i is null.
* Since Java 7 you can use String in switch statements.
More about switch (including example with null variable) in Oracle Docs - Switch
switch ((i != null) ? i : DEFAULT_VALUE) {
//...
}
switch(i) will throw a NullPointerException if i is null, because it will try to unbox the Integer into an int. So case null, which happens to be illegal, would never have been reached anyway.
You need to check that i is not null before the switch statement.
Java docs clearly stated that:
The prohibition against using null as a switch label prevents one from writing code that can never be executed. If the switch expression is of a reference type, such as a boxed primitive type or an enum, a run-time error will occur if the expression evaluates to null at run-time.
You must have to verify for null before Swithch statement execution.
if (i == null)
See The Switch Statement
case null: // will never be executed, therefore disallowed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With