在java中从boolean转换为byte

Mar*_*tin 15 java byte boolean type-conversion

我需要将字节值设置为方法参数.我有布尔变量isGenerated,它决定了在这个方法中执行的逻辑.但我可以直接传递boolean作为字节参数这是不允许的,不能在java中强制转换.所以我现在的解决方案看起来像这样:

myObj.setIsVisible(isGenerated ? (byte)1 : (byte)0);
Run Code Online (Sandbox Code Playgroud)

但对我来说这似乎很奇怪.也许存在一些更好的解决方案吗?

PrR*_*rR3 19

你的解决方案是正确的

如果你喜欢你可以通过以下方式避免一个演员:

myObj.setIsVisible((byte) (isGenerated ? 1 : 0 ));
Run Code Online (Sandbox Code Playgroud)

另外,您应该考虑对您的实现进行以下更改之一:

  • 如果需要考虑两种以上的可能状态,请将方法更改为setVisiblityState(字节状态)

  • 如果您的方法执行它的样子,则将您的方法更改为setIsVisible(boolean value)


Fed*_*man 5

您可以使用此解决方案。我在这个非常有用的页面上找到了它

boolean vIn = true;
byte vOut = (byte)(vIn?1:0);
Run Code Online (Sandbox Code Playgroud)