实例化枚举 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 ;

}

}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部