Iva*_*van 2 java byte casting literals
好的,从Java 6开始,没有y literal后缀.考虑以下代码:
byte b = some_byte();
switch (b) {
case (byte) 0x80: ...
case (byte) 0x81: ...
Run Code Online (Sandbox Code Playgroud)
而这个替代方案:
int b = some_byte() & 0xff;
switch (b) {
case 0x80: ...
case 0x81: ...
Run Code Online (Sandbox Code Playgroud)
你会用哪个?在第一种情况下,在运行时或编译时执行(字节)强制转换?谢谢.
你会用哪个?
可能是后者,仅仅是为了简单 - 但有一个评论来解释发生了什么.
在第一种情况下,在运行时或编译时执行(字节)强制转换?
编译时间.不要忘记,无论如何,case值必须是编译时常量.
另一种选择是为这些东西创建常量:private static final byte FOO =(byte)0x80; private static final byte BAR =(byte)0x81;
...
switch (someByte()) {
case FOO:
case BAR:
...
}
Run Code Online (Sandbox Code Playgroud)
除了其他任何东西,这使得价值观不那么"神奇".
或者你甚至可以使用枚举...