From ae5099174d0a72e6dff2af2730d69b9cd263313a Mon Sep 17 00:00:00 2001 From: septer Date: Fri, 10 Aug 2012 09:10:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DReflectionUtils=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alibaba/druid/util/ReflectionUtils.java | 94 ++++++++----------- 1 file changed, 40 insertions(+), 54 deletions(-) diff --git a/src/main/java/com/alibaba/druid/util/ReflectionUtils.java b/src/main/java/com/alibaba/druid/util/ReflectionUtils.java index 36e23c2b5f..9984752e89 100644 --- a/src/main/java/com/alibaba/druid/util/ReflectionUtils.java +++ b/src/main/java/com/alibaba/druid/util/ReflectionUtils.java @@ -1,92 +1,78 @@ package com.alibaba.druid.util; +import java.lang.reflect.Constructor; import java.lang.reflect.Method; import javax.servlet.http.HttpServletRequest; +import com.alibaba.druid.support.logging.Log; +import com.alibaba.druid.support.logging.LogFactory; + /** * @author sandzhang */ -public class ReflectionUtils -{ +public class ReflectionUtils { - public static Class getClassFromWebContainerOrCurrentClassLoader(String className) - { + private final static Log LOG = LogFactory.getLog(ReflectionUtils.class); + + public static Class getClassFromWebContainerOrCurrentClassLoader(String className) { Class result = null; - try - { + try { result = HttpServletRequest.class.getClassLoader().loadClass(className); + } catch (ClassNotFoundException e) { + LOG.warn(e.getMessage(), e); } - catch (ClassNotFoundException e) - { - } - if (result == null) - { - try - { + if (result == null) { + try { result = Thread.currentThread().getContextClassLoader().loadClass(className); - } - catch (ClassNotFoundException e) - { + } catch (ClassNotFoundException e) { + LOG.warn(e.getMessage(), e); } } return result; } + public static Object callStaticMethod(Class classObject, String methodName) { - public static Object callStaticMethod(Class classObject, String methodName) - { - - try - { + try { Method m = classObject.getMethod(methodName); return m.invoke(classObject); + } catch (Exception e) { + LOG.error(e.getMessage(), e); } - catch (Exception e) - { - return null; - } + return null; } - - public static Object callObjectMethod(Object obj, String methodName) - { - - try - { - Method m = obj.getClass().getMethod(methodName); - return m.invoke(obj); - } - catch (Exception e) - { - return null; + public static Object callObjectMethod(Object obj, String methodName) { + try { + Constructor ctor = ((Class) obj).getConstructor(); + Object instance = ctor.newInstance(); + Method m = ((Class) obj).getMethod(methodName); // 获取方法 + return m.invoke(instance); + } catch (Exception e) { + LOG.error(e.getMessage(), e); } + return null; } - - public static Object callObjectMethod(Object obj, String methodName, Object methodParam) - { - try - { - Method m = obj.getClass().getMethod(methodName); - return m.invoke(obj,methodParam); - } - catch (Exception e) - { - return null; + public static Object callObjectMethod(Object obj, String methodName, Object methodParam) { + try { + Constructor ctor = ((Class) obj).getConstructor(); + Object instance = ctor.newInstance(); + Method m = ((Class) obj).getMethod(methodName, methodParam.getClass()); // 获取方法 + return m.invoke(instance); + } catch (Exception e) { + LOG.error(e.getMessage(), e); } + return null; } - - public void getTest() - { + public void getTest() { System.out.println("dd"); // return "test"; } - - public static void main(String args[]) - { + public static void main(String args[]) { System.out.println(callObjectMethod(new ReflectionUtils(), "getTest")); }