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);
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM