0

私のC++コードでは、このようなことをたくさんします

enum BarType {
    BT_UNKNOWN              = 0,
    BT_NORMAL               = 1,
    BT_BAR_REST             = 2,
    BT_REPEAT_PREV_MEASURES = 3,
    BT_TYPE_MASK            = 0x03,

    ... etc
};
BarType GetBarType(int bn)  { return (BarType)(m_barType[bn] & BT_TYPE_MASK); }

列挙型で取得する型チェックが好きなので、嫌いなものをすべてintにする以外に、Javaでこれを行う方法はありますか?

ありがとう

4

2 に答える 2

3

最もクリーンな解決策は、マスクごとにjava.util.EnumSetを使用することです。次に、特定の列挙値がマスクに対応するセットに含まれているかどうかをテストできます。

于 2013-02-15T08:25:48.043 に答える
1

valuesおそらく列挙型で配列を使用して、そのようなことを達成できます。

 public enum BarType { BT_UNKNOWN, BT_NORMAL, BT_BAR_REST, BT_REPEAT }
 private static final int BT_TYPE_MASK = 0x03;

 public BarType getBarType(int bn) {
      return BarType.values()[bn & BT_TYPE_MASK]; 
 }

order invaluesは、列挙項目が定義されている順序です。

于 2013-02-15T08:25:22.340 に答える