java 枚举(二) 级联关系

关于java 枚举的封装,就不赘述了

详见:https://www.cnblogs.com/hanjun0612/p/9779804.html

最近公司出现了奇葩要求,就是需要枚举级联。。。。

仔细想想吧,早知道还不如用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);
    }
原文地址:https://www.cnblogs.com/hanjun0612/p/14469732.html