我有2个类:在第一个类中我有返回int值的静态方法,以及const - NETWORK_EXCEPTION(public static final int NETWORK_EXCEPTION = 1),在第二个类中我从静态方法返回值并将其用于switch块:
int response=NetworkUtilities.addNewUser(email, name, number);
switch (response) {
case (NetworkUtilities.NETWORK_EXCEPTION):
break;
}
Run Code Online (Sandbox Code Playgroud)
但我总是得到以下消息:"case表达式必须是常量表达式".如何创建交换机块?可能我需要使用枚举?请给我一个例子或修改我的代码.
public static int NETWORK_EXCEPTION=-1;
public static int EXIST_EXCEPTION=0;
Run Code Online (Sandbox Code Playgroud)
编辑:现在你已经发布了声明,很清楚:
public static int NETWORK_EXCEPTION=-1;
public static int EXIST_EXCEPTION=0;
Run Code Online (Sandbox Code Playgroud)
应该
public static final int NETWORK_EXCEPTION=-1;
public static final int EXIST_EXCEPTION=0;
Run Code Online (Sandbox Code Playgroud)
注意final部分 - 没有它们,它们不是常量.(在您之前的问题文本中,您声称已将其声明为final- 确切地说这是值得的:)
顺便说一下,鉴于您使用包含"异常"的名称来声明这些,您确定不应该只是抛出异常吗?
那绝对应该没问题.简短但完整的程序演示:
class Constants {
public static final int NETWORK_EXCEPTION = 1;
}
public class Test {
public static void main(String[] args) {
int value = Integer.parseInt(args[0]);
switch (value) {
case Constants.NETWORK_EXCEPTION:
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
你确定它被宣布为final?用一个值1而不是一些方法调用的结果?
如果你可以发布一个类似的短但完整的程序失败,那将有所帮助.