实例化枚举 java_java 动态实例化内部类 可解析枚举
package com.util;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 功能:枚举使用工具 作者:Gary Huang 日期:
* 2014-3-5 版权:版权所有(C) 2014,QQ 834865081
*/
public class EnumUtil {
public static void main(String[] args) throws Exception {
System.out.println(parseEnum("enum:com.util.Task1.Yes"));
}
public static Map parseEnum(String clazz)
throws Exception {
if(clazz.startsWith("enum:")){
clazz = clazz.replace("enum:", "" );
}else{
return null ;
}
Class> ref = forName(clazz) ;
if(null == ref){
throw new ClassNotFoundException(String.format("%s class not fond ", clazz));
}
Map map = new LinkedHashMap();
if (ref.isEnum()) {
Object[] ts = ref.getEnumConstants();
for (Object t : ts) {
Enum> e = (Enum>) t;
map.put(e.ordinal(), e.name());
}
}
return map;
}
static Class> forName(String className) throws Exception{
String[]packageNames = className.split("\\.") ;
String tempClassName = "" ;
Class> returnClazz = null ;
for(String packageName : packageNames){
tempClassName += packageName ;
if(fristCharIsUpper(packageName)){
if( null == returnClazz){
try{
returnClazz = Class.forName( tempClassName);
}catch(Exception e){}
}else {
Class> classes[]=returnClazz.getDeclaredClasses();
for(Class> tempClazz : classes){
if(tempClazz.getSimpleName().equals(packageName)){
returnClazz = tempClazz ;
}
}
}
}
tempClassName += "." ;
}
return returnClazz ;
}
static boolean fristCharIsUpper(String name){
if(null != name && name.length() >0){
char[]chars = name.toCharArray() ;
int intChar = (int)chars[0] ;
return intChar <= 90 && intChar >= 65 ;
}
return false ;
}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
