我需要将字节值设置为方法参数。我有布尔变量isGenerated
,它决定了在这个方法中执行的逻辑。但我可以直接传递boolean作为字节参数,这是不允许的,不能在java中强制转换。所以我现在的解决方案看起来像这样:
myObj.setIsVisible(isGenerated ? (byte)1 : (byte)0);
但对我来说这似乎很奇怪。也许存在一些更好的解决方案吗?
答案 0 :(得分:16)
你的解决方案是正确的。
如果你愿意,你可以通过以下方式避免一次演员:
myObj.setIsVisible((byte) (isGenerated ? 1 : 0 ));
另外,您应该考虑对您的实现进行以下更改之一:
如果您需要考虑两种以上的可能状态,请将您的方法更改为 setVisiblityState(字节状态)
如果您的方法执行的操作
答案 1 :(得分:4)
答案 2 :(得分:0)
这并不奇怪。没关系。 奇怪的是你需要将类型化的布尔值转换为不可自解释的字节。但是,有时我们在使用旧API时必须这样做。
BTW如果你想节省内存,你可以使用1位而不是字节,所以你可以将几个布尔标志组合在一起,同时为每个布尔值使用位。但是,只有在保存几个字节时,这种技术才能与大量数据相关。