我有2类:在第一类中,我有返回int值的静态方法,以及const-NETWORK_EXCEPTION(公共静态最终int NETWORK_EXCEPTION = 1),在第二类中,我从静态方法中获得了返回值并将其用于开关块:
int response=NetworkUtilities.addNewUser(email, name, number);
switch (response) {
case (NetworkUtilities.NETWORK_EXCEPTION):
break;
}
但是我总是收到以下消息:“ case表达式必须是常量表达式”。如何创建开关块?可能需要使用枚举吗?给我一个例子或修正我的代码。
public static int NETWORK_EXCEPTION=-1;
public static int EXIST_EXCEPTION=0;
最佳答案
编辑:现在您已经发布了声明,很明显:
public static int NETWORK_EXCEPTION=-1;
public static int EXIST_EXCEPTION=0;
应该
public static final int NETWORK_EXCEPTION=-1;
public static final int EXIST_EXCEPTION=0;
注意
final
部分-否则它们不是常数。 (在您先前的问题文本中,您声称您已将其声明为final
-为此,您需要确切地说:)顺便说一句,假设您使用包括“ exception”在内的名称进行声明,那么您确定不应该只是抛出异常吗?
那应该没问题。简短但完整的程序演示:
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;
}
}
}
您确定将其声明为
final
吗?且其值仅为1
而不是某些方法调用的结果?如果您可以发布类似的简短但完整的程序但失败了,那将会有所帮助。