Integer i = ...
switch (i) {
case null:
doSomething0();
break;
}
在上面的代码中,我不能在switch case语句中使用null。我该怎么做呢?我不能用默认,因为我想做别的。
Integer i = ...
switch (i) {
case null:
doSomething0();
break;
}
在上面的代码中,我不能在switch case语句中使用null。我该怎么做呢?我不能用默认,因为我想做别的。
当前回答
你也可以使用String.valueOf((对象)nullableString) 就像
switch (String.valueOf((Object) nullableString)) {
case "someCase"
//...
break;
...
case "null": // or default:
//...
break;
}
参见有趣的SO Q/A:为什么String.valueOf(null)抛出NullPointerException
其他回答
switch(i)如果i为null,将抛出NullPointerException,因为它将尝试将Integer拆箱为int。所以case null,恰好是非法的,永远不会被达到。
你需要在switch语句之前检查i是否为空。
你也可以使用String.valueOf((对象)nullableString) 就像
switch (String.valueOf((Object) nullableString)) {
case "someCase"
//...
break;
...
case "null": // or default:
//...
break;
}
参见有趣的SO Q/A:为什么String.valueOf(null)抛出NullPointerException
switch (String.valueOf(value)){
case "null":
default:
}
你不能。你可以在switch中使用基本类型(int, char, short, byte)和String(仅在java 7中使用字符串)。原语不能为空。 开关前检查i是否处于单独状态。
switch ((i != null) ? i : DEFAULT_VALUE) {
//...
}