java 获取枚举的值_java 根据值获取枚举对象

packagecom.gomepay.gb.utils.enums;importcom.gomepay.gb.utils.ExceptionUtils;importjava.lang.reflect.InvocationTargetException;importjava.lang.reflect.Method;importjava.math.BigDecimal;importjava.util.Objects;/***@authorwww.gomepay.com

* @date 2020/1/19*/

public classEnumUtils {/*** 值映射为枚举

*

*@paramenumClass 枚举类

*@paramvalue 枚举值

*@parammethod 取值方法

*@param 对应枚举

*@return

*/

public static > E valueOf(ClassenumClass, Object value, Method method) {

E[] es=enumClass.getEnumConstants();for(E e : es) {

Object evalue;try{

method.setAccessible(true);

evalue=method.invoke(e);

}catch (IllegalAccessException |InvocationTargetException e1) {throw ExceptionUtils.mpe("Error: NoSuchMethod in {}. Cause:", e, enumClass.getName());

}if (value instanceof Number && evalue instanceofNumber&& new BigDecimal(String.valueOf(value)).compareTo(new BigDecimal(String.valueOf(evalue))) == 0) {returne;

}if(Objects.equals(evalue, value)) {returne;

}

}return null;

}/*** 根据value值获取enum对象

*@paramenumClass

*@paramvalue

*@param

*@return

*/

public static > E getEnumByValue(final ClassenumClass,Object value) {try{return valueOf(enumClass,value,enumClass.getMethod("getValue"));

}catch(NoSuchMethodException e) {

e.printStackTrace();

}return null;

}/*** 根据value值获取text

*@paramenumClass

*@paramvalue

*@param

*@return

*/

public static > String getTextByValue(final ClassenumClass,Object value) {

E e=getEnumByValue(enumClass,value);

Object evalue;

Method method= null;try{

method= enumClass.getMethod("getText");

method.setAccessible(true);

evalue=method.invoke(e);

}catch (NoSuchMethodException |IllegalAccessException |InvocationTargetException e1) {throw ExceptionUtils.mpe("Error: NoSuchMethod in {}. Cause:", e, enumClass.getName());

}if (evalue != null) {returnString.valueOf(evalue);

}return null;

}/*** 根据code值获取enum对象,如果code值相同,则获取第一个enum对象

*@paramenumClass

*@paramvalue

*@param

*@return

*/

public static > E getEnumByCode(final ClassenumClass,Object value) {try{return valueOf(enumClass,value,enumClass.getMethod("getCode"));

}catch(NoSuchMethodException e) {

e.printStackTrace();

}return null;

}/*** 根据code值获取text,如果code值相同,则获取第一个enum对象的text

*@paramenumClass

*@paramvalue

*@param

*@return

*/

public static > String getTextByCode(final ClassenumClass,Object value) {

E e=getEnumByCode(enumClass,value);

Object evalue;

Method method= null;try{

method= enumClass.getMethod("getText");

method.setAccessible(true);

evalue=method.invoke(e);

}catch (NoSuchMethodException |IllegalAccessException |InvocationTargetException e1) {throw ExceptionUtils.mpe("Error: NoSuchMethod in {}. Cause:", e, enumClass.getName());

}if (evalue != null) {returnString.valueOf(evalue);

}return null;

}/*** 根据code值获取enum对象

*@paramenumClass

*@paramvalue

*@param

*@return

*/

public static > E getEnumBySubCode(final ClassenumClass,Object value) {try{return valueOf(enumClass,value,enumClass.getMethod("getSubCode"));

}catch(NoSuchMethodException e) {

e.printStackTrace();

}return null;

}/*** 根据code值获取text,如果code值相同,则获取第一个enum对象的text

*@paramenumClass

*@paramvalue

*@param

*@return

*/

public static > String getSubTextBySubCode(final ClassenumClass,Object value) {

E e=getEnumBySubCode(enumClass,value);

Object evalue;

Method method= null;try{

method= enumClass.getMethod("getSubText");

method.setAccessible(true);

evalue=method.invoke(e);

}catch (NoSuchMethodException |IllegalAccessException |InvocationTargetException e1) {throw ExceptionUtils.mpe("Error: NoSuchMethod in {}. Cause:", e, enumClass.getName());

}if (evalue != null) {returnString.valueOf(evalue);

}return null;

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值