java 枚举(二) 级联关系

本文介绍了一种在Java中实现枚举级联的方法,通过扩展枚举类型以支持子枚举列表,适用于需要多层次枚举展示的场景。文中提供了具体的代码实现案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值