联动枚举
1,基础枚举(编码,描述),设置对应的属性获取方法,一般返回另一属性
2,综合枚举(分类,子类枚举数值),设置综合get赛选方法,一般返回大类枚举 綜合枚举的定位由子枚举编码决定
3,根据输入参数获取对应的综合枚举
4,根据业务要求,是哪种综合枚举就最什么业务(每个字段是否可编辑单独设置字段编制)
5,枚举get返回类型还是另一个其他字段根据业务需要,返回整个类型1,总体综合判断时,2,需要其他更多信息时
用成员map也可以实现
TestEnum
Test_10(10,
new Integer[]{TestStEnum.R.code(), TestStEnum.O.code()},
new Integer[]{TestTEnum.W.code()},
TestTypeEnum.P.code(),
TestTypeEnum.M.code(),
TestNodeEnum.M.code()),
TestEnum testEnum = TestEnum.get(
item.getSt(), item.getType(), item.getOType(), item.getOType(), item.getN());
Test_10.equals(testEnum)
public static Test1Enum get(Integer st, Integer wt, Integer ot, Integer os, Integer wn) {
for (Test1Enum item : values()) {
if (checkArray(item.st(), st) &&
checkArray(item.wt(), wt) &&
checkInteger(item.ot(), ot) &&
checkInteger(item.os(), os) &&
checkInteger(item.wn(), wn)) {
return item;
}
}
return null;
}
private static boolean checkArray(Integer[] target, Integer origin) {
if (ObjectUtils.isEmpty(target) && origin == null) {
return true;
} else if (target != null && origin != null) {
return Arrays.asList(target).contains(origin);
} else {
return false;
}
}
private static boolean checkInteger(Integer target, Integer origin) {
if (target == null && origin == null) {
return true;
} else if (target != null && origin != null) {
return target.equals(origin);
} else {
return false;
}
DATE("日期时间",
new TestdEnum[]{TestdEnum.O, TestdEnum.C},
new TestrEnum[]{TestrEnum.E, TestrEnum.A, TestrEnum.B,
TestrEnum.N, TestrEnum.NN}),