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
变量,它不是编译时间常数,因此不是有效的大小写标签吗?
由于c是最终变量,因此不是编译时间常数
不会。常量表达式的规则在JLS 15.28中给出,并且不包含包装器类型:
常量表达式是表示原始类型或字符串的值的表达式,该值不会突然完成,并且仅使用以下[...]组成
包装器类型既不是原始类型,也不是String
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句