我有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而不是某些方法调用的结果?

如果您可以发布类似的简短但完整的程序但失败了,那将会有所帮助。

07-24 09:32