反射机制下的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
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