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



浙公网安备 33010602011771号