byte a = 125;
final byte b = 2;
final Byte c = 3;
switch (a) {
case b: // works fine
break;
case c: // Constant Expression required
break;
}
Since c
is a final
variable, isn't it a compile time constant and hence a valid case label?
byte a = 125;
final byte b = 2;
final Byte c = 3;
switch (a) {
case b: // works fine
break;
case c: // Constant Expression required
break;
}
Since c
is a final
variable, isn't it a compile time constant and hence a valid case label?
No. The rules for constant expressions are given in JLS 15.28, and they don't include wrapper types:
A wrapper type is neither a primitive type nor
String
.