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