好吧,您 几乎 可以做到:
public enum CharEnum // Let's avoid java.lang.* clashes{ A(1), B(2), C(4), D(8); private final int mask; private CharEnum(int mask) { this.mask = mask; } public int getMask() { return mask; }}然后:
CharEnum ch = if ((ch.getMask() & CharEnum.A.getMask()) > 0){ // some operation...}在某些情况下,这可能很有用,但是正如Michael所说,您绝对应该考虑
EnumSet一般的“值集”选项。
如果 确实 决定使用带值的枚举,则可以在枚举本身内放入额外的逻辑:
public enum CharEnum{ // Other pre as before public boolean overlapsWith(CharEnum ch) { return (ch.mask & mask) > 0; }}


