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

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64
