当前位置: 首页 > 面试题库 >

如何在开关中使用null

胥康安
2023-03-14
问题内容
Integer i = ...

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

在上面的代码中,我不能在switch case语句中使用null。我该怎么做呢?我无法使用,default因为那之后我想做其他事情。


问题答案:

使用switchJava中的语句无法做到这一点。在null之前检查switch

if (i == null) {
    doSomething0();
} else {
    switch (i) {
    case 1:
        // ...
        break;
    }
}

您不能在switch语句*中使用任意对象。究其原因,编译器不会抱怨switch (i)这里i是一个Integer是因为Java自动unboxes的Integer一个int。正如assylias已经说过的,拆箱将抛出NullPointerExceptionwhen
iis null

*从Java 7开始,您可以String在in switch语句中使用。

Oracle
Docs中的
更多信息switch(包括带有null变量的示例)-Switch



 类似资料:
  • 我能够测试代码,但代码覆盖率不包括第二个开关情况。 请参考以下代码。 下面是我的测试代码。 由于我已经声明了一个带有测试值的字符串变量,所以我无法涵盖第二个switch语句。我尝试过if else的情况,但同样的问题发生了。我们还有别的办法吗?

  • 我正在尝试检查我的VO中设置了哪些值。 下面是我的女儿。我得到的是“合格的病例标签MyEnum.UserType.Doctors必须替换为不合格的枚举常量Doctors” EnumTest.java

  • 问题内容: 是否可以在switch语句中使用关系运算符(<,<=,>,> =)? 上面的例子(显然)不起作用 问题答案: 你不能。 从jls-14.11 关系运算符(<,<=,>,> =)导致并且不允许这样做。 以下所有条件必须为真,否则会发生编译时错误: 与switch语句关联的每个case常量表达式都必须可分配给开关Expression的类型(第5.2节)。 与switch语句关联的大小写常量

  • 问题内容: 我正在尝试使用$ log.debug(“ Foo”)。如何将其关闭。我在任何地方都找不到样品。我认为它需要在配置中设置,但我似乎也无法使其正常工作。 哪里设置开关? 问题答案: $ logProvider.debugEnabled(true) 仅在AngularJs 1.1.2或更高版本中可用。 https://github.com/angular/angular.js/pull/16

  • 我使用开关盒获得较大范围:

  • 问题内容: 创建表时如何使用关键字? 假设我要创建两个表,并且我希望业余爱好表ID引用人员的ID? 我怎么做? 问题答案: 与此类似,创建兴趣表: