如何在Java中将枚举拆分为多个类别
我有不同的理由来做决定。我基本上有三个类别,如何在Java中将枚举拆分为多个类别,java,enums,Java,Enums,我有不同的理由来做决定。我基本上有三个类别,批准组,禁止组和拒绝组。我的拒绝组分为两个-块和动作。对此进行建模的最佳方式是什么 我将在类中存储决策的类型 public class A{ //some Members DecisionGroup decision } 我将得到一个列表,需要将其分为4个列表,每个列表对应不同的类型。我曾考虑使用枚举,但我不确定如何将拒绝组一分为二。如果您的结构比枚举更复杂,请考虑编写自己的类。不要忘记覆盖equals/hashcode,以确保两个相
批准组
,禁止组
和拒绝组
。我的拒绝组
分为两个-块
和动作
。对此进行建模的最佳方式是什么
我将在类中存储决策的类型
public class A{
//some Members
DecisionGroup decision
}
我将得到一个
列表
,需要将其分为4个列表,每个列表对应不同的类型。我曾考虑使用枚举,但我不确定如何将拒绝组一分为二。如果您的结构比枚举更复杂,请考虑编写自己的类。不要忘记覆盖equals/hashcode,以确保两个相同的决定是“相等的”。如果您的结构比枚举更复杂,请考虑编写您自己的类。不要忘记覆盖equals/hashcode,以确保两个相同的决策是“相等的”
枚举可以有属性,因此您可以定义4个组,并将“主要”类别作为定义列表的参数
或者,您甚至可以将列表本身作为枚举组的属性
或者,编写一个枚举类别,其中包含确定定义列表的组的方法
enum Category {
Approved {
@Override
public Group select(A a) {
return Group.ApprovedGroup;
}
},
Suppressed {
@Override
public Group select(A a) {
return Group.SuppressedGroup;
}
},
Rejected {
@Override
public Group select(A a) {
...
return Group.BlockRejectedGroup;
...
return Group.ActionRejectedGroup;
}
};
public abstract Group select(A a);
}
枚举可以有属性,因此您可以定义4个组,并将“主要”类别作为定义列表的参数
或者,您甚至可以将列表本身作为枚举组的属性
或者,编写一个枚举类别,其中包含确定定义列表的组的方法
enum Category {
Approved {
@Override
public Group select(A a) {
return Group.ApprovedGroup;
}
},
Suppressed {
@Override
public Group select(A a) {
return Group.SuppressedGroup;
}
},
Rejected {
@Override
public Group select(A a) {
...
return Group.BlockRejectedGroup;
...
return Group.ActionRejectedGroup;
}
};
public abstract Group select(A a);
}
“我的拒绝小组分为两个街区和行动”——我不明白。也许你应该显示你的枚举和组。关于枚举组,我使用常量java.util.EnumSet和该组中的枚举值,并使用contains方法进行检查。@ZufarMuhamadeev通过拆分为两个,我的意思是它包含两种类型:Block和Action。其余的小组并没有类型“我的拒绝小组被分成两个区块和行动”-我不明白。也许你应该显示你的枚举和组。关于枚举组,我使用常量java.util.EnumSet和该组中的枚举值,并使用contains方法进行检查。@ZufarMuhamadeev通过拆分为两个,我的意思是它包含两种类型:Block和Action。其他组没有类型。我认为enum足够好,因为它只是一堆常量字符串。我认为enum足够好,因为它只是一堆常量字符串。这似乎是一种更好的方法。另外,我将如何根据块或动作拒绝组拆分ClassA列表?@user1692342 DecisionGroup的值是什么?它们是否与我的
枚举组
相同?@luane classA不应该包含类别而不是组吗?我现在有点困惑-四个列表还是三个列表,如何区分块和操作?我需要提取4个列表。我想把类别保留在classA中,但我想直接把这个组放进去是有意义的。谢谢,这似乎是一个更好的方法。另外,我将如何根据块或动作拒绝组拆分ClassA列表?@user1692342 DecisionGroup的值是什么?它们是否与我的枚举组
相同?@luane classA不应该包含类别而不是组吗?我现在有点困惑-四个列表还是三个列表,如何区分块和操作?我需要提取4个列表。我想把类别保留在classA中,但我想直接把这个组放进去是有意义的。