Java枚举的内容可以使用map的方式

枚举的内容可以使用map的方式

package com.chinamobile.framework.common.enums;

import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@SuppressWarnings("unused")
public interface BaseEnum {

	String getKey();

	String getValue();

	static <E> boolean isKeyExists(Class<E> enumClass, String key) {
		if (StringUtils.isEmpty(key)) {
			return false;
		}
		List<String> keys = getKeyList(enumClass);
		if (CollectionUtils.isEmpty(keys)) {
			return false;
		}
		return keys.contains(key);
	}

	static <E> boolean isValueExists(Class<E> enumClass, String value) {
		if (StringUtils.isEmpty(value)) {
			return false;
		}
		List<String> values = getValueList(enumClass);
		if (CollectionUtils.isEmpty(values)) {
			return false;
		}
		return values.contains(value);
	}

	static <E> List<String> getKeyList(Class<E> enumClass) {
		List<String> list = new ArrayList<>();
		if (!BaseEnum.class.isAssignableFrom(enumClass)) {
			return list;
		}
		for (E e : enumClass.getEnumConstants()) {
			BaseEnum ce = (BaseEnum) e;
			list.add(ce.getKey());
		}
		return list;
	}

	static <E> List<String> getValueList(Class<E> enumClass) {
		List<String> list = new ArrayList<>();
		if (!BaseEnum.class.isAssignableFrom(enumClass)) {
			return list;
		}
		for (E e : enumClass.getEnumConstants()) {
			BaseEnum ce = (BaseEnum) e;
			list.add(ce.getValue());
		}
		return list;
	}
	
	static <E> List<Map<String, String>> getMapList(Class<E> enumClass) {
		List<Map<String, String>> mapList = new ArrayList<>();
		if (!BaseEnum.class.isAssignableFrom(enumClass)) {
			return mapList;
		}
		for (E e : enumClass.getEnumConstants()) {
			BaseEnum ce = (BaseEnum) e;
			Map<String, String> map = new HashMap<>();
			map.put("key", ce.getKey());
			map.put("value", ce.getValue());
			mapList.add(map);
		}
		return mapList;
	}

	static List<Map<String, String>> getMapList(BaseEnum... enumData) {
		List<Map<String, String>> mapList = new ArrayList<>();
		for (BaseEnum ed : enumData) {
			Map<String, String> map = new HashMap<>();
			map.put("key", ed.getKey());
			map.put("value", ed.getValue());
			mapList.add(map);
		}
		return mapList;
	}

	static Map<String, String> getMap(BaseEnum enumData) {
		Map<String, String> enumMap = new HashMap<>();
		enumMap.put("key", enumData.getKey());
		enumMap.put("value", enumData.getValue());
		return enumMap;
	}

	static <E> String key2Value(Class<E> enumClass, String key) {
		if (!BaseEnum.class.isAssignableFrom(enumClass)) {
			return "";
		}
		for (E e : enumClass.getEnumConstants()) {
			BaseEnum ce = (BaseEnum) e;
			if (ce.getKey().equals(key)) {
				return ce.getValue();
			}
		}
		return "";
	}
	
	static <E> List<String> key2Value(Class<E> enumClass, List<String> keys) {
		if (CollectionUtils.isEmpty(keys)) {
			return new ArrayList<>();
		}
		List<String> values = new ArrayList<>();
		for (String key : keys) {
			values.add(key2Value(enumClass, key));
		}
		return values;
	}

	static <E> E key2Enum(Class<E> enumClass, String key) {
		if (!BaseEnum.class.isAssignableFrom(enumClass)) {
			return null;
		}
		for (E e : enumClass.getEnumConstants()) {
			BaseEnum ce = (BaseEnum) e;
			if (ce.getKey().equals(key)) {
				return e;
			}
		}
		return null;
	}
	
	static <E> List<E> key2Enum(Class<E> enumClass, List<String> keys) {
		if (CollectionUtils.isEmpty(keys)) {
			return new ArrayList<>();
		}
		List<E> enums = new ArrayList<>();
		for (String key : keys) {
			enums.add(key2Enum(enumClass, key));
		}
		return enums;
	}

	static <E> String value2Key(Class<E> enumClass, String value) {
		if (!BaseEnum.class.isAssignableFrom(enumClass)) {
			return "";
		}
		for (E e : enumClass.getEnumConstants()) {
			BaseEnum ce = (BaseEnum) e;
			if (ce.getValue().equalsIgnoreCase(value)) {
				return ce.getKey();
			}
		}
		return "";
	}
	
	static <E> List<String> value2Key(Class<E> enumClass, List<String> values) {
		if (CollectionUtils.isEmpty(values)) {
			return new ArrayList<>();
		}
		List<String> keys = new ArrayList<>();
		for (String value : values) {
			keys.add(value2Key(enumClass, value));
		}
		return keys;
	}
	
	static <E> E value2Enum(Class<E> enumClass, String value) {
		if (!BaseEnum.class.isAssignableFrom(enumClass)) {
			return null;
		}
		for (E e : enumClass.getEnumConstants()) {
			BaseEnum ce = (BaseEnum) e;
			if (ce.getValue().equals(value)) {
				return e;
			}
		}
		return null;
	}
	
	static <E> List<E> value2Enum(Class<E> enumClass, List<String> values) {
		if (CollectionUtils.isEmpty(values)) {
			return new ArrayList<>();
		}
		List<E> enums = new ArrayList<>();
		for (String value : values) {
			enums.add(value2Enum(enumClass, value));
		}
		return enums;
	}

}

下面是继承的示例

public enum OracleErrorTypeEnum implements BaseEnum  {
	DemandTask("DemandTask","需求调查任务"),DemandReport("DemandReport","需求调查填报"),DemandSummary("DemandSummary","需求调查汇总"),NEEDS_SURVEY( "NEEDS_SURVEY","需求调查业务");
	private String key;
    private String value;
   /*构造函数*/
    private OracleErrorTypeEnum(String key, String value) {
        this.key = key;
        this.value = value;
    }
	public String getKey() {
		return key;
	}
	public void setKey(String key) {
		this.key = key;
	}
	public String getValue() {
		return value;
	}
	public void setValue(String value) {
		this.value = value;
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨航 AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值