在java中从boolean转换为byte

时间:2014-08-18 09:44:09

标签: java boolean byte type-conversion

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

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

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

3 个答案:

答案 0 :(得分:16)

你的解决方案是正确的。

如果你愿意,你可以通过以下方式避免一次演员:

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

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

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

  • 如果您的方法执行的操作

  • ,请将您的方法更改为 setIsVisible(布尔值)

答案 1 :(得分:4)

您可以使用此解决方案。我在这个非常有用的页面上找到了它 boolean vIn = true; byte vOut =(byte)(vIn?1:0);

答案 2 :(得分:0)

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

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