我正在开发一个利用字节数组操作的项目,我试图写出类似于以下的代码:
boolean enabled = getEnabled();
byte enabledByte = enabled ? 0x01 : 0x00; // compile error
我遇到的问题是无法编译上述内容。
但是,如果我将它扩展为以下内容,则可以正常工作:类型不匹配:无法将 int 转换为 byte
boolean enabled = getEnabled();
byte enabledByte;
if (enabled) {
enabledByte = 0x01;
} else {
enabledByte = 0x00;
}
我的问题是
为什么我无法在短if语句中使用字节赋值?
byte enabledByte = true ? 0x01 : 0x00;
可以编译通过? - ldztrue ? 0x01 : 0x00
是一个常量表达式,不同于使用变量而非true
字面值的情况。请参考我的答案,了解语言规范如何规定这一点。 - M A