JAVA----枚举的相互转换
枚举转换工具
package com.util; import java.lang.reflect.Method; import java.util.LinkedHashMap; import java.util.Map; import org.apache.commons.lang3.reflect.MethodUtils; /** * <strong>功能:</strong>枚举使用工具 * <strong>作者:</strong>Gary Huang * <strong>日期:</strong> 2014-3-5 * <strong>版权:<strong>版权所有(C) 2014,QQ 834865081 */ public class EnumUtil { public static String getText(Class<?> ref , Object code){ return parseEnum(ref).get( TransformUtils.toString(code) ) ; } public static <T> Map<String, String> parseEnum(Class<T> ref){ Map<String, String> map = new LinkedHashMap<String, String>() ; if(ref.isEnum()){ T[] ts = ref.getEnumConstants() ; for(T t : ts){ String text = getInvokeValue(t, "getText") ; Enum<?> tempEnum = (Enum<?>) t ; if(text == null){ text = tempEnum.name() ; } String code = getInvokeValue(t, "getCode") ; if(code == null){ code = TransformUtils.toString( tempEnum.ordinal() ) ; } map.put(code , text ) ; } } return map ; } public static <T> T getEnumItem(Class<T> ref , Object i){ T returnT = null ; if(ref.isEnum()){ T[] ts = ref.getEnumConstants() ; String tempI = Helper.checkNull(i); for(T t : ts){ Enum<?> tempEnum = (Enum<?>) t ; String code = getInvokeValue(t, "getCode") ; if(code == null){ code = TransformUtils.toString( tempEnum.ordinal() ) ; } if(tempI.equals(code)){ returnT = t; break ; } } } return returnT ; } static <T> String getInvokeValue(T t , String methodName){ Method method = MethodUtils.getAccessibleMethod( t.getClass() , methodName); if(null == method){ return null ; } try { String text = TransformUtils.toString(method.invoke( t )) ; return text ; } catch (Exception e) { return null ; } } }定义枚举
public enum Yes { A(0), B(1), C(2), D(3), F(4); private Integer code; Yes() { } Yes(int code) { this.code = code; } public Integer getCode() { return code; } }
枚举的应用
public static void main(String[] args) { System.out.println( EnumUtil.getText(Yes.class, 2 ) ) ; /*获取枚举2的文本内容*/ System.out.println( EnumUtil.getEnumItem(Yes.class, 2) ) ; /*将数字2转换成为枚举*/ System.out.println( EnumUtil.parseEnum(Yes.class) ) ; /*将枚举转换成为Map*/ }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。