【发布时间】:2017-03-19 18:44:21
【问题描述】:
在一个使用字节数组操作的项目上工作,我试图写这样的东西:
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;编译? -
@ldz 这是因为
true ? 0x01 : 0x00是一个常量表达式,这与使用变量而不是true文字的情况不同。请参阅我的回答,了解语言规范如何规定这一点。