byte a = 125;
final byte b = 2;
final Byte c = 3;
switch (a) {
case b: // works fine
break;
case c: // Constant Expression required
break;
}
由于c
是final
变量,因此它不是编译时常量,因此是有效的案例标签吗?
答案 0 :(得分:5)
由于c是最终变量,因此它不是编译时常量
没有。常量表达式的规则在JLS 15.28中给出,它们不包括包装类型:
常量表达式是表示基本类型的值的表达式或不突然完成的字符串,仅使用以下[...]
组成
包装器类型既不是基本类型也不是String
。