为什么最终字节作为switch语句中的一个案例不能编译?

时间:2015-06-11 13:38:03

标签: java switch-statement constants

byte a = 125;
final byte b = 2;
final Byte c = 3;
switch (a) {
case b: // works fine
    break;
case c: // Constant Expression required
    break;
}

由于cfinal变量,因此它不是编译时常量,因此是有效的案例标签吗?

1 个答案:

答案 0 :(得分:5)

  

由于c是最终变量,因此它不是编译时常量

没有。常量表达式的规则在JLS 15.28中给出,它们不包括包装类型:

  

常量表达式是表示基本类型的值的表达式或不突然完成的字符串,仅使用以下[...]

组成

包装器类型既不是基本类型也不是String