• 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);
        }
  • 相关阅读:
    线程状态
    线程的两种实现方式
    设计模式
    移动端适配总结(补充一个移动端touch案例)
    echart.js组件编写
    vuex,文件夹整理
    rem初始化
    PC初始化
    移动端初始化
    三角形实现原理
  • 原文地址:https://www.cnblogs.com/hanjun0612/p/14469732.html
Copyright © 2020-2023  润新知