Java反射工具類,java工具類
mport java.lang.reflect.Array; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class Reflection { /** * 得到某個對象的公用屬性 * * @param owner, fieldName * @return 該屬性對象 * @throws Exception * */ public Object getProperty(Object owner, String fieldName) throws Exception { Class ownerClass = owner.getClass(); Field field = ownerClass.getField(fieldName); Object property = field.get(owner); return property; } /** * 得到某類的靜態公用屬性 * * @param className 類名 * @param fieldName 屬性名稱 * @return 該屬性對象 * @throws Exception */ public Object getStaticProperty(String className, String fieldName) throws Exception { Class ownerClass = Class.forName(className); Field field = ownerClass.getField(fieldName); Object property = field.get(ownerClass); return property; } /** * 執行某對象方法 * * @param owner * 對象 * @param methodName * 方法名 * @param args * 參數 * @return 方法傳回值 * @throws Exception */ public Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception { Class ownerClass = owner.getClass(); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++) { argsClass[i] = args[i].getClass(); } Method method = ownerClass.getMethod(methodName, argsClass); return method.invoke(owner, args); } /** * 執行某類的靜態方法 * * @param className * 類名 * @param methodName * 方法名 * @param args * 參數數組 * @return 執行方法返回的結果 * @throws Exception */ public Object invokeStaticMethod(String className, String methodName, Object[] args) throws Exception { Class ownerClass = Class.forName(className); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++) { argsClass[i] = args[i].getClass(); } Method method = ownerClass.getMethod(methodName, argsClass); return method.invoke(null, args); } /** * 建立執行個體 * @param className 類名 * @param args 建構函式的參數 * 如果無構造參數,args 填寫為 null * @return 建立的執行個體 * @throws Exception */ public Object newInstance(String className, Object[] args,Class[] argsType) throws NoSuchMethodException, SecurityException, ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { Class newoneClass = Class.forName(className); if(args == null){ return newoneClass.newInstance(); }else{ // Class[] argsClass = new Class[args.length]; //// for (int i = 0, j = args.length; i < j; i++) { // argsClass[i] = args[i].getClass(); // } //// Constructor cons = newoneClass.getConstructor(argsClass); Constructor cons = newoneClass.getConstructor(argsType); return cons.newInstance(args); } } /** * 是不是某個類的執行個體 * @param obj 執行個體 * @param cls 類 * @return 如果 obj 是此類的執行個體,則返回 true */ public boolean isInstance(Object obj, Class cls) { return cls.isInstance(obj); } /** * 得到數組中的某個元素 * @param array 數組 * @param index 索引 * @return 返回指定數組對象中索引組件的值 */ public Object getByArray(Object array, int index) { return Array.get(array,index); } public Class<?> GetClassListByPackage(String pPackage) { Package _Package = Package.getPackage(pPackage); Class<?> _List =_Package.getClass(); return _List; }}