首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在开关中使用null

如何在开关中使用null
EN

Stack Overflow用户
提问于 2012-04-26 19:04:27
回答 10查看 238.9K关注 0票数 249
代码语言:javascript
复制
Integer i = ...

switch (i){
    case null:
        doSomething0();
        break;    
    }

在上面的代码中,我不能在switch case语句中使用null。我怎样才能以不同的方式做到这一点呢?我不能使用default,因为我想做其他的事情。

EN

回答 10

Stack Overflow用户

发布于 2015-06-03 00:04:21

代码语言:javascript
复制
switch ((i != null) ? i : DEFAULT_VALUE) {
        //...
}
票数 124
EN

Stack Overflow用户

发布于 2012-04-26 19:06:21

如果I为nullswitch(i)将抛出NullPointerException,因为它将尝试将Integer拆箱为int。因此,碰巧是非法的case null,无论如何都不会被联系到。

您需要在switch语句之前检查i是否不为null。

票数 44
EN

Stack Overflow用户

发布于 2012-04-26 19:14:49

Java文档清楚地指出:

禁止使用null作为开关标签可以防止编写永远无法执行的代码。如果开关表达式是引用类型,如装箱的基元类型或枚举,则如果表达式在运行时计算为null,则会发生运行时错误。

在执行Swithch语句之前,必须验证是否为null。

代码语言:javascript
复制
if (i == null)

请参阅The Switch Statement

代码语言:javascript
复制
case null: // will never be executed, therefore disallowed.
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10332132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档