メソッドパラメータとしてバイト値を設定する必要があります。このメソッド内で実行されるロジックを決定するブール変数isGenerated
があります。しかし、ブール値をブール値として直接渡すことはできますが、これは許可されておらず、Javaでキャストできません。だから私が今持っている解決策は次のようになります:
myObj.setIsVisible(isGenerated ? (byte)1 : (byte)0);
しかし、それは私には奇妙に思えます。多分これを行うためのいくつかのより良い解決策がありますか?
あなたの解決策は正しいです。
次のようにすることで、1つのキャストを回避できます。
myObj.setIsVisible((byte) (isGenerated ? 1 : 0 ));
さらに、実装に対する次の変更のいずれかを検討する必要があります。
2つ以上の考えられる状態を考慮する必要がある場合は、メソッドをsetVisiblityState(byte state)のように変更します。
メソッドをsetIsVisible(boolean value)に変更してください。
このソリューションを使用できます。 this 非常に便利なページで見つけました
boolean vIn = true;
byte vOut = (byte)(vIn?1:0);
それは奇妙ではありません。大丈夫です。奇妙なことに、型付きブール値を自己説明可能なバイトに変換する必要があります。ただし、レガシーAPIを操作するときにこれを行う必要がある場合があります。
ところで、メモリを節約したい場合は、バイトの代わりに1ビットを使用できます。そのため、ブール値ごとにビットを使用しながら、複数のブールフラグをグループ化できます。ただし、この手法は、数バイトを節約することが重要な場合にのみ、大量のデータに関連します。