JAVA----枚举的相互转换
来源:互联网 发布:软件开发求职能力 编辑:程序博客网 时间:2024/06/03 17:39
枚举转换工具
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*/}
0 0
- JAVA----枚举的相互转换
- 枚举中枚举值和枚举数的相互转换
- C# 枚举、字符串、值的相互转换
- C# 枚举、字符串、值的相互转换
- C# 枚举、字符串、值的相互转换
- java unicode的相互转换
- java数据类型的相互转换
- c#中枚举和int之间的相互转换
- 怎样实现字符串与枚举量的相互转换
- 在枚举类型的值和字符串之间相互转换
- enum枚举与int string类型之间的相互转换
- 在枚举类型的值和字符串之间相互转换
- Java变量类型间的相互转换
- Java变量类型间的相互转换
- Java变量类型间的相互转换
- Java变量类型间的相互转换
- Java数据类型间的相互转换
- Java数据类型间的相互转换
- Ural 1057. Amount of Degrees
- 并查集(Union-Find)
- 在windows下批量执行mysql脚本
- API Demo 学习笔记——AutoCompleteTextView
- 黑马视频学习笔记-结构体(三)
- JAVA----枚举的相互转换
- 僵尸进程和孤儿进程
- Java 信号量 Semaphore 介绍
- 屏幕的横竖
- 用Python和Pygame写游戏-从入门到精通(实战二:恶搞俄罗斯方块1)
- 科学定位 安心才是正道
- 学习之道,贵在坚持!!!
- 做框架首先考虑的就是易用性
- mysql中count的用法