通过反射获取方法的参数和返回值的泛型信息
来源:百度文库 编辑:神马文学网 时间:2024/05/15 22:14:04
http://www.blogjava.net/ITdavid/archive/2008/02/28/182608.html
通过反射获取方法的参数和返回值的泛型信息
1 package test;
2
3 import java.lang.reflect.Method;
4 import java.lang.reflect.ParameterizedType;
5 import java.lang.reflect.Type;
6 import java.util.List;
7 import java.util.Map;
8
9 public class TempTest {
10
11 public static void main(String[] args) throws Exception {
12 Method[] methods = TempTest.class.getDeclaredMethods();
13 for (Method method : methods) {
14 System.out.println("method:" + method.getName());// 方法名
15
16 // //////////////方法的参数
17 System.out.println(" paramTypeType: ");
18 Type[] paramTypeList = method.getGenericParameterTypes();// 方法的参数列表
19 for (Type paramType : paramTypeList) {
20 System.out.println(" " + paramType);// 参数类型
21 if (paramType instanceof ParameterizedType)/**//* 如果是泛型类型 */ {
22 Type[] types = ((ParameterizedType) paramType)
23 .getActualTypeArguments();// 泛型类型列表
24 System.out.println(" TypeArgument: ");
25 for (Type type : types) {
26 System.out.println(" " + type);
27 }
28 }
29 }
30
31 // //////////////方法的返回值
32 System.out.println(" returnType: ");
33 Type returnType = method.getGenericReturnType();// 返回类型
34 System.out.println(" " + returnType);
35 if (returnType instanceof ParameterizedType)/**//* 如果是泛型类型 */ {
36 Type[] types = ((ParameterizedType) returnType)
37 .getActualTypeArguments();// 泛型类型列表
38 System.out.println(" TypeArgument: ");
39 for (Type type : types) {
40 System.out.println(" " + type);
41 }
42 }
43
44 }
45
46 }
47
48 public static String method1(List list) {
49 return null;
50 }
51
52 private static Map method2(Map map) {
53 return null;
54 }
55
56 }
通过反射获取方法的参数和返回值的泛型信息
1
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