Integer i = ...
switch (i){
case null:
doSomething0();
break;
}
在上面的代码中,我不能在switch case语句中使用null。我该怎么做呢?我无法使用,default
因为那之后我想做其他事情。
使用switch
Java中的语句无法做到这一点。在null
之前检查switch
:
if (i == null) {
doSomething0();
} else {
switch (i) {
case 1:
// ...
break;
}
}
您不能在switch
语句*中使用任意对象。究其原因,编译器不会抱怨switch (i)
这里i
是一个Integer
是因为Java自动unboxes的Integer
一个int
。正如assylias已经说过的,拆箱将抛出NullPointerException
when
i
is 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? 我怎么做? 问题答案: 与此类似,创建兴趣表: