出于各种商业原因,我想在我的一个类中保存一些静态 ID。它们最初是int
,但我想将它们更改为Integer
这样我可以对它们做一个 equals (即MY_ID.equals(..)
避免 NPE)
当我将它们更改为 Integer 时,我的 switch 语句中出现错误。文档说 Integer 在 Switches 中应该没问题。
去引用
[Switch] 也适用于枚举类型(在 Enum Types 中讨论)、String 类和一些包装某些基本类型的特殊类:Character、Byte、Short 和 Integer(在 Numbers 和 Strings 中讨论)。
在我下面的代码中,如果 i 是 aint
那么它会编译。当它是 a 时,Integer
它不会说 a constant expression is required
。我试过这样做.intValue()
,但这也不起作用。
我真的很傻吗?还是完全误读了文档?
private static final Integer i = 1;
@Test
public void test() {
switch(mObj.getId()){
case i: //do something
default: //do something default
}
}
感谢这里的任何指示。暂时我将它们保持原样int
并做new Integer(myint).equals(...)