我想在一个枚举中存储不同的枚举类型。
这是正确的(最短的)方式吗?
public enum MyEnums {
all(EnumSet.of(Color.red, Shape.round));
MyEnums(EnumSet<? extends Enum<?>> keys) {
this.keys = keys;
}
private final Set<? extends Enum<?>> keys;
public Set<? extends Enum<?>> getKeys() {
return keys;
}
}
使用不同类型的集合。 EnumSet是designed to hold enum values of a single kind only:
枚举集中的所有元素必须来自单个枚举类型
关键是它非常有效,因为它存储了当前序数值的位掩码 - 大多数枚举值少于64个值,所以它基本上需要的成员变量是Class
和long
。 (EnumSet的私有子类称为JumboEnumSet,它处理更大的枚举)。
如果您有多个枚举类型,则无法使用相同的序号区分不同枚举的值。