如何将枚举与分组和子分组层次结构/嵌套一起使用
我有一个enum
“班级”,称为Example
:
enum Example {//enums belonging to group A:
enumA1,
enumA2,
enumA3,
//enums belonging to group B:
enumB1,
enumB2,
enumB3,
//enums belonging to group C:
enumC1,
enumC2,
enumC3;
}
对于我的项目而言,它们所涉及的所有枚举都非常重要Example
(因为这是类的构造函数中的一个参数)。
我如何使用enum
层次结构/嵌套来实现以下目的:
一种测试an
enum
是否属于A,B或C组的方法。例如,类似于Example.enumA1.isGroupBelonging(Group.A)
或isGroupBelonging(Example.enumA1,Group.A)
将是返回true的公共方法。能够做同样的事情组的子组
A
,B
和C
。例如,A组可能有子组a
,b
和c
。然后,我想要一个做某事的方法,例如Example.enumA1.isSubGroupBelonging(SubGroup.a)
whichpublic boolean
。一种无需所有复杂
enum
名称即可完成所有代码的方法。例如,最好能够Example.enumA1
在我的其他所有类中进行引用,而无需使用诸如Example.enumA1(Group.A,SubGroup.a)
或Example.enumA1.Group.A.SubGroup.a
回答:
我将使用一个非常简单的枚举构造函数,该构造函数将相应的组与枚举值相关联:
public enum Example { ENUM_A1 (Group.A),
ENUM_A2 (Group.A),
ENUM_A3 (Group.A),
ENUM_B1 (Group.B),
ENUM_B2 (Group.B),
ENUM_B3 (Group.B),
ENUM_C1 (Group.C),
ENUM_C2 (Group.C),
ENUM_C3 (Group.C);
private Group group;
Example(Group group) {
this.group = group;
}
public boolean isInGroup(Group group) {
return this.group == group;
}
public enum Group {
A,
B,
C;
}
}
用法:
import static Example.*;import Example.Group;
...
ENUM_A1.isInGroup(Group.A); // true
ENUM_A1.isInGroup(Group.B); // false
要进行分组,您可以使用与示例相同的Group结构,将其Group(SubGroup ...
subgroups)用作构造函数并EnumSet<SubGroup>
包含分组。
以上是 如何将枚举与分组和子分组层次结构/嵌套一起使用 的全部内容, 来源链接: utcz.com/qa/409157.html