在 enumSet 中存储不同的枚举类型
store different enum types in enumSet
我想在一个枚举中存储不同的枚举类型。
这是正确(最短)的方式吗?
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;
}
}
使用不同类型的设置。枚举集是 designed to hold enum values of a single kind only:
All of the elements in an enum set must come from a single enum type
关键是它非常高效,因为它存储了当前序数值的位掩码——大多数枚举的值少于 64 个,因此就成员变量而言,它基本上需要的只是 Class
和 long
。 (有一个 EnumSet 的私有子类,称为 JumboEnumSet,它处理更大的枚举)。
如果您有多个枚举类型,它无法区分具有相同序号的不同枚举的值。
我想在一个枚举中存储不同的枚举类型。
这是正确(最短)的方式吗?
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;
}
}
使用不同类型的设置。枚举集是 designed to hold enum values of a single kind only:
All of the elements in an enum set must come from a single enum type
关键是它非常高效,因为它存储了当前序数值的位掩码——大多数枚举的值少于 64 个,因此就成员变量而言,它基本上需要的只是 Class
和 long
。 (有一个 EnumSet 的私有子类,称为 JumboEnumSet,它处理更大的枚举)。
如果您有多个枚举类型,它无法区分具有相同序号的不同枚举的值。