ビットフラグを使用して、バイトからユーザー指定のオプションを読み取っています。バイトに無効/不明なフラグ値が含まれているかどうかを確認したい。
これまでに書いた簡単なテスト コードは次のようになります。
public class Test {
static byte flag1 = 0x01;
static byte flag2 = 0x02;
static byte flag3 = 0x04;
public static void main(String[] args) {
byte invalidFlags = 0x0F;
byte goodFlags = (byte) (flag1 | flag2);
System.out.println(flagsAreOK(invalidFlags));
System.out.println(flagsAreOK(goodFlags));
// prints:
//
// false
// true
}
private static boolean flagsAreOK(byte value) {
byte allFlags = (byte) (flag1 | flag2 | flag3);
byte badFlags = (byte) ~allFlags;
return ((value & badFlags) == 0);
}
}
これは問題なく動作するようです。ただし、次のいずれかを知っている人はいますか。
これを行うためのよりきちんとした方法はありますか?私は決してビット操作の専門家ではありません。
フラグ操作を処理する既存のライブラリ? Apache Commons Lang から見つけましたが、JavaDocs を読むことが
BitField
いかに不可能であるかについて不平を言うバグが既にあります。