我想将enum-constants用于switch-case-statement。
我正在使用以下枚举/类:
public enum Cons {
ONE(1), TWO(2);
private final int val;
private Cons(final int newVal) { val = newVal; }
public int getVal() { return val; } }
public class Main {
public static void main(String[] args) {
int test;
// some code
switch(test) {
case Cons.ONE.getVal():
// ...
break;
case Cons.TWO.getVal():
// ...
break;
default:
// ...
}
} }
问题: “案例表达式必须是常量表达式” =>尽管属性private final int val声明为,但我的枚举的值不是常量final。
如何将这个枚举用于案例陈述?
问题来源:stackoverflow
大小写标签必须是编译时常数表达式。方法调用不是其中之一。
您可以做的就是将测试更改为缺点。然后可以在开关中使用它:
Cons test;
// some code
switch(test) {
case Cons.ONE:
// ...
break;
case Cons.TWO:
// ...
break;
default:
// ...
}
如果必须使用int,请创建一个使用该值返回正确的枚举实例的方法。
Cons lookUpByVal(int test) { ... }
switch(lookUpByVal(test)) { case Cons.ONE: ...
----
答案来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。