关于java 枚举的封装,就不赘述了
详见:https://blog.csdn.net/hanjun0612/article/details/72845960
最近公司出现了奇葩要求,就是需要枚举级联。。。。
仔细想想吧,早知道还不如用map算了,
勉为其难的脑洞大开。。。说一下关于级联。各位见笑了,请海涵。
一,EnumItem 修改
增加了一个 List<EnumItem<T>> child 属性
package test.EnumTest;
import java.util.List;
/**
* @author Tyler
* @date 2021/3/2
*/
public class EnumItem<T> {
private T itemKey;
private String itemValue;
private String itemCN;
private String itemEN;
private List<EnumItem<T>> child;
public EnumItem() {
}
public EnumItem(T itemKey, String itemCN, String itemEN, String itemValue, List<EnumItem<T>> child) {
this.itemKey=itemKey;
this.itemValue=itemValue;
this.itemCN=itemCN;
this.itemEN=itemEN;
this.child=child;
}
public T getItemKey() {
return itemKey;
}
public void setItemKey(T itemKey) {
this.itemKey = itemKey;
}
public String getItemValue() {
return itemValue;
}
public void setItemValue(String itemValue) {
this.itemValue = itemValue;
}
public String getItemCN() {
return itemCN;
}
public void setItemCN(String itemCN) {
this.itemCN = itemCN;
}
public String getItemEN() {
return itemEN;
}
public void setItemEN(String itemEN) {
this.itemEN = itemEN;
}
public List<EnumItem<T>> getChild() {
return child;
}
public void setChild(List<EnumItem<T>> child) {
this.child = child;
}
}
二,枚举值修改
package test.EnumTest;
import java.util.ArrayList;
import java.util.List;
/**
* @author Tyler
* @date 2021/3/2
*/
public class EnumList {
public interface IEnumList {
EnumItem getEnumItem();
}
//性别
public enum SexEnum implements IEnumList {
MAN(1, "男", "M", "1"
, new ArrayList<EnumItem>(){
{
this.add(new EnumItem(11, "男", "M1", "11",null));
this.add(new EnumItem(12, "男", "M2", "12",null));
this.add(new EnumItem(13, "男", "M3", "13",null));
}}
)
,WOMAN(2, "女", "W", "2"
, new ArrayList<EnumItem>(){
{
this.add(new EnumItem(21, "女", "F1", "21",null));
this.add(new EnumItem(22, "女", "F2", "22",null));
this.add(new EnumItem(23, "女", "F3", "23",null));
this.add(new EnumItem(24, "女", "F4", "24",null));
}}
)
;
private EnumItem item = new EnumItem();
SexEnum(Integer itemKey, String itemCN, String itemEN, String itemValue, ArrayList<EnumItem> child) {
item.setItemKey(itemKey);
item.setItemCN(itemCN);
item.setItemEN(itemEN);
item.setItemValue(itemValue);
item.setChild(child);
}
@Override
public EnumItem getEnumItem() {
return item;
}
}
//有效性
public enum ValidEnum implements IEnumList {
Valid(1, "Valid", "Valid", "1"
, new ArrayList<EnumItem>(){
{
this.add(new EnumItem(11, "yes", "yes1", "11",null));
}}
)
,Invalid(2, "Invalid", "Invalid", "2"
, new ArrayList<EnumItem>(){
{
this.add(new EnumItem(21, "no1", "F1", "2",null));
this.add(new EnumItem(22, "no2", "F2", "2",null));
}}
)
;
private EnumItem item = new EnumItem();
ValidEnum(Integer itemKey, String itemCN, String itemEN, String itemValue, ArrayList<EnumItem> child) {
item.setItemKey(itemKey);
item.setItemCN(itemCN);
item.setItemEN(itemEN);
item.setItemValue(itemValue);
item.setChild(child);
}
@Override
public EnumItem getEnumItem() {
return item;
}
}
}
三,测试
@Test
public void Test()
{
List<EnumItem> sexItems= EnumHelper.getEnumList(EnumList.SexEnum.class);
List<EnumItem> vaildItems= EnumHelper.getEnumList(EnumList.ValidEnum.class);
EnumItem vaildItem=EnumHelper.getEnumItem(EnumList.ValidEnum.class,1);
System.out.println(111);
}