为什么java switch语句不能处理null,因为它有一个“default”子句?
例如,如果你有类似的东西
switch(value){
case VAL1: do_something1(); break;
case VAL2: do_something2(); break;
default: do_something3();
}
“默认”不应该处理任何其他值,例如 null 吗?
一如既往,它在 JLS 中: http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.11
14.11。这switch
陈述
以下所有条件都必须为真,否则会发生编译时错误:
...
禁止使用null
作为开关标签可以防止编写永远无法执行的代码。如果switch表达式是引用类型,即String
或装箱基元类型或枚举类型,那么如果表达式计算结果为,则会发生运行时错误null
在运行时。在Java编程语言的设计者看来,这比默默地跳过整个过程要好。switch
语句或选择执行后面的语句(如果有)default
标签(如果有)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)