反射机制下的Java动态加载方法

 1    /**
 2      * 反射机制下的方法调用
 3      * @param className String    类名
 4      * @param methodName String   方法名
 5      * @param parameterClasses Class[]   参数类型
 6      * @param parameterObjects Object[]   参数内容
 7      * @return Object   返回值
 8      */

 9     private Object reflectClassFunByName(String className,
10                                          String methodName,
11                                          Class[] parameterClasses,
12                                          Object[] parameterObjects)
13     {
14         Object instance = null;
15         Class instanceClass = null;
16
17         try
18         {
19             instanceClass = Class.forName(className);
20             instance = instanceClass.newInstance();
21         }

22         catch(Exception ex)
23         {
24             logger.error("Look for the class with exception:", ex);
25             return null;
26         }

27
28         return reflectClassFunByInstance(instance, methodName, parameterClasses, parameterObjects);
29     }

30
31     /**
32      * 反射机制下的方法调用
33      * @param className Object    实例
34      * @param methodName String   方法名
35      * @param parameterClasses Class[]   参数类型
36      * @param parameterObjects Object[]   参数内容
37      * @return Object   返回值
38      */

39     private Object reflectClassFunByInstance(Object instance,
40                                              String methodName,
41                                              Class[] parameterClasses,
42                                              Object[] parameterObjects)
43     {
44         if(instance == null)
45         {
46             logger.error("Instance is null !");
47             return null;
48         }

49
50         Method method = null;
51         try
52         {
53             method = instance.getClass().getMethod(methodName,
54                 parameterClasses);
55             return method.invoke(instance, parameterObjects);
56         }

57         catch(Exception ex)
58         {
59             logger.error("Didn't find the method : ", ex);
60         }

61
62         return null;
63     }

64

posted on 2008-06-09 16:51  逍遥子  阅读(711)  评论(1编辑  收藏  举报

导航