java在枚举集中存储不同的枚举类型
我想在一个枚举中存储不同的枚举类型
这是最短的路吗强>
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;
}
}
# 1 楼答案
使用另一种设置。枚举集为designed to hold enum values of a single kind only:
关键是它非常有效,因为它存储了当前序数值的位掩码-大多数枚举的值少于64个,因此它基本上只需要
Class
和long
作为成员变量。(EnumSet有一个私有子类,称为JumboEnumSet,它处理较大的枚举)如果有多个枚举类型,则无法区分具有相同序号的不同枚举中的值