在java中从boolean转换为byte

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

 myObj.setIsVisible(isGenerated ? (byte)1 : (byte)0); 

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

你的解决方案是正确的

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

 myObj.setIsVisible((byte) (isGenerated ? 1 : 0 )); 

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

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

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

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

 boolean vIn = true; byte vOut = (byte)(vIn?1:0); 

这并不奇怪。 没关系。 奇怪的是你需要将类型化的布尔值转换为不可自解释的字节。 但是,有时我们必须在使用旧版API时执行此操作。

顺便说一句,如果你想节省内存,你可以使用1位而不是字节,这样你就可以将几个布尔标志组合在一起,同时为每个布尔值使用位。 但是,只有在保存几个字节时,这种技术才能与大量数据相关。