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); }

除了制作我讨厌的所有整数之外,有没有办法在 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]; 
 }

中的顺序values是定义枚举项的顺序。

于 2013-02-15T08:25:22.340 回答