假设我有一个枚举:
enum EnumDemo{
A1,
A2,
A3,
B1,
B2,
B3,
C1,
C2,
C3
}
我应该使用什么方法来创建可以包含多个 EnumDemo 元素的枚举集,但所有元素都应该来自一组,例如:
{A1, B2, C1}、{B1, C2},但不是 {A1, A3, B1, C1}
任何想法都值得赞赏:)
最佳答案
您可以保留其所属组的每个枚举元素 ID。并根据此 id 创建枚举组:
enum EnumDemo{
A1(0),
A2(0),
A3(0),
B1(1),
B2(1),
B3(1),
C1(2),
C2(2),
C3(2);
private int groupId;
private EnumDemo(int groupId) {
this.groupId = groupId;
}
public static Set<EnumDemo> getGroup(int groupId) {
Set<EnumDemo> group = EnumSet.noneOf(EnumDemo.class);
for (EnumDemo value : values()) {
if (value.groupId == groupId) {
group.add(value);
}
}
return group;
}
}
如果组是静态的并且不随时间变化,则此方法很好。您还可以创建像 Group
这样的枚举,并使用它代替 int 作为 id。您还可以在应用程序中动态更改元素的groupId
,但我不确定这是个好方法。
关于java - Java中逻辑复杂的EnumSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13581862/