在Switch语句中使用整数
由于各种业务原因,我想在我的一个类中保存一些静态ID。它们本来是int
但我想将它们更改为,Integer
以便可以对它们进行平等处理(即MY_ID.equals(..)
避免使用NPE)
当我将它们更改为Integer时,我的switch语句中出现错误。该文件说,整数应该是交换机内确定。
报价
[Switch]还适用于枚举类型(在Enum
Types中讨论),String类和一些包装某些基本类型的特殊类:Character,Byte,Short和Integer(在Numbers和Strings中讨论)。
在下面的代码中,如果我是a int
则将其编译。当它是一个Integer
不说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(...)
回答:
将常量更改为原始类型:
private static final int i = 1;
你会没事的。switch
只能与基元,枚举值和(自Java 7起)字符串一起使用。一些提示:
new Integer(myint).equals(...)
可能是多余的。如果至少有一个变量是原始变量,请执行:myint == ...
。equals()
仅在与Integer
包装器比较时才需要。更喜欢-
Integer.valueOf(myInt)
而不是new Integer(myInt)
-并尽可能依靠自动装箱。常量通常在Java中使用大写字母编写,因此
static final int I = 1
。
以上是 在Switch语句中使用整数 的全部内容, 来源链接: utcz.com/qa/424529.html