枚举工具类

通过Key获取枚举对象,方法不太公用,可以根据项目实际情况改造下

public class EnumsUtil {
	
	public static<T> String getValue(final Class<T> c, Object code){
		String value = null;
		if(code==null){
			return value;
		}
		T t = getEnum(c,code);
		if(t==null){
			return value;
		}
		try {
			Method getValue = t.getClass().getMethod("getValue", null);
			if(getValue!=null){
				Object invoke = getValue.invoke(t);
				return String.valueOf(invoke);
			}
		} catch (NoSuchMethodException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		}

		return value;
	}
	public static<T> T getEnum(final Class<T> c, Object code){
		T value = null;
		if(code==null){
			return null;
		}
		try {
			ArrayList<T> ts = new ArrayList<T>(Arrays.asList(c.getEnumConstants()));
			Object invoke = null;
			for (T t : ts) {
				Method getCode = t.getClass().getMethod("getCode", null);
				if(getCode==null){
					return null;
				}
				invoke = getCode.invoke(t);
				if(invoke.equals(code)){
					return t;
				}
			}
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			e.printStackTrace();
		}

		return value;
	}
	public static void main(String[] args) {
		String str = getValue(StatusCodeEnums.class, 1);
		System.out.println(str);
		StatusCodeEnums value = getEnum(StatusCodeEnums.class, 1);
		System.out.println(value.getValue());
	}
@Getter
public enum StatusCodeEnums {
	enable(1,"有效")
	,disable(0,"有效");

	private Integer code;
	private String value;

	StatusCodeEnums(Integer code, String value) {
		this.code = code;
		this.value = value;
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值