java 动态实例化内部类 可解析枚举
package com.util; import java.util.LinkedHashMap; import java.util.Map; /** * <strong>功能:</strong>枚举使用工具 <strong>作者:</strong>Gary Huang <strong>日期:</strong> * 2014-3-5 <strong>版权:<strong>版权所有(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<Integer, String> 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<Integer, String> map = new LinkedHashMap<Integer, String>(); 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 ; } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。