为什么在switch语句中最终的Byte不能编译?

有偿的
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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么最终变量不能在switch语句中使用?

为什么不能在switch语句中声明变量?

为什么在switch语句中不能完全限定枚举值?

为什么在Java的switch语句中不能使用“ continue”?

为什么不能在switch语句中使用元组常量作为大小写

为什么我们不能在 switch 语句中使用关系表达式?

VS Code中的JavaScript:为什么不能在“ switch”语句中折叠“ case”代码块?

Switch中的静态最终整数:为什么不能这样做?

为什么我不能将其他类的常量添加到 java 中的 switch 语句中?

为什么我不能在IF语句中嵌套SUBSTITUTE?

为什么不能在 if 语句中使用空指针?

为什么不能在if语句中声明变量?

为什么不能在DELETE语句中使用别名?

为什么不能在“ if”语句中的整数前加零

为什么在for循环的初始语句中不能声明多个变量?

为什么switch语句中的个案没有自己的范围?

为什么switch语句中的“ case”为负数缩进?

为什么不在switch语句中处理char?C ++

为什么从Powershell switch语句中的变量进行奇怪的赋值?

为什么不能在字符串上使用switch语句?

为什么我不能在类中放置 switch 语句

为什么对布尔switch语句有编译器警告?

在枚举上的Java switch语句中,为什么在每种情况下限定我的值时都出现编译错误?

为什么我在If语句中设置的变量不能在javascript中的if语句之外起作用?

switch语句中的最终变量大小写

为什么我的if语句在switch语句中总是评估为false?

有什么情况我不能在switch语句中使用'continue'吗?

为什么这种类型的最终变量初始化不能在 Java 中编译?

为什么MDB类不能是最终的