ブール値をバイトにパックするメソッドの単体テストを書いています。さまざまなビット位置は列挙型の値によって決定され、現在は 5 つの値しかありませんが、この数が 9 になる可能性は考えられます (非常にありそうもないことですが)。
次の行に沿った簡単なテストが必要です。
プライベート バイト m_myNum; enum MyEnum {...}
assert(sizeof(m_myNum) <= MyEnum.values().length);
Java には sizeof 関数がないという印象を受けました。最もエレガントな回避策は何ですか?
- -編集
私ははっきりしていなかったと思います。通常の実行時間は気にしません。私の問題は、すべての情報を格納するバイトを使用してこのコードを記述できるようになったことですが、Enum がコードの無関係な部分で大きくなると、ビットマスキング コードが壊れるポイントに到達する可能性があります。展開されたアプリケーションでこれを行うのではなく、列挙型の状態の数がストレージ変数のビット数を超えたときに失敗する単体テストを作成したいので、プログラマーがその9番目の列挙型を追加すると、調整できます変数の型を 8 ビット以上のものに変更します。