我想在一个枚举中存储不同的枚举类型。
这是正确(最短)的方法吗?
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;
}
}
答案 0 :(得分:4)
使用另一种设置。 EnumSet为designed to hold enum values of a single kind only:
枚举集中的所有元素都必须来自单个枚举类型
重点是它非常有效,因为它存储了当前序数值的位掩码-大多数枚举数都少于64个值,因此,就成员变量而言,它基本上所需的全部是Class
和a long
。 (有一个EnumSet的私有子类,称为JumboEnumSet之类,可以处理较大的枚举。)
如果您有多种枚举类型,则无法区分具有相同序数的不同枚举值。