【问题标题】:How to create switch block in Java?如何在 Java 中创建 switch 块?
【发布时间】:2011-12-09 01:09:04
【问题描述】:

我有 2 个类:在第一类中,我有返回 int 值的静态方法和 const - NETWORK_EXCEPTION (public static final 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;

【问题讨论】:

  • 你能发布常量 NETWORK_EXCEPTION 的实际声明吗?
  • 您的public static final int 中没有final

标签: java


【解决方案1】:

编辑:现在你已经发布了声明,很清楚:

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 - 准确地说是值得的 :)

顺便说一句,鉴于您声明这些名称包含“异常”,您确定不应该只是抛出异常吗?


那应该没问题。简短但完整的演示程序:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    相关资源
    最近更新 更多