日期:2014-05-20  浏览次数:20624 次

求教枚举的使用问题
不知道为什么以下用法是错误的
提示
  case expressions must be constant expressions
Java code
public class TestEnum {

    public static void main(String[] args) {
        int val = 2;
        switch (val) {
        case INT.ONE.getVal():

            break;

        default:
            break;
        }
    }
}

enum INT {
    ONE(1), TWO(2), THREE(3);

    private int val;

    private INT(int val) {
        this.val = val;
    }

    /**
     * @return the val
     */
    public int getVal() {
        return val;
    }

}


------解决方案--------------------
你应该这样用[code=Java][/code]public class Test11 {

public static void main(String[] args) {
INT v=INT.ONE;
int val;
switch (v) {
case ONE:
val=1;
break;

default:
break;
}
}
}

enum INT {
ONE(1), TWO(2), THREE(3);

private int val;

private INT(int val) {
this.val = val;
}

/**
* @return the val
*/
public int getVal() {
return val;
}

}
------解决方案--------------------
case的分支需要是常量值,而不能是变量值,
这就是理由。。。

探讨

1.2楼的用法我当然是知道的
只是我不知道我这样为什么有问题