首页 > 代码库 > JAVA----枚举的相互转换
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*/ }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。