不知道为什么以下用法是错误的
提示
    case expressions must be constant expressions
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;
}}

解决方案 »

  1.   

    你应该这样用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;
        }}
      

  2.   


    INT val = INT.TWO;
            switch (val) {
            case ONE:
      

  3.   

    case的分支需要是常量值,而不能是变量值,
    这就是理由