需求:Collection<Date> con = new ArrayList<Date>(); 则 如何通过反射的方式或的<>中的参数类型?
- /**
- * 需求:得到泛型 中的类型
- * 比如
- * Vector<Date> v = new Vactor<Date>();
- * 则泛型中的参数类型为Date
- *
- *
- */
- package test;
- import java.lang.reflect.*;
- import java.util.*;
- public class GetType
- {
-
- public static void main(String[] args) throws Exception
- {
- //第二步:通过反射得到第一步的方法
- Method applyMethod = GetType.class.getMethod("applyVector", Vector.class);
- //第三步:通过反射得到该方法的参数列表
- Type [] types = applyMethod.getGenericParameterTypes();
- //第四步:得到第一个参数
- ParameterizedType pType = (ParameterizedType)types[0];
- //得到原始类型参数
- System.out.println(pType.getRawType());
- //得到泛型参数
- System.out.println(pType);
- //得到实际化的类型参数(可能有多个,比如HashMap<K,V>集合,所以用数组接受)
- Type [] ts = pType.getActualTypeArguments();
- for (Type type : ts) {
- System.out.println(type);
- }
-
- }
- //第一步:首先定义一个方法:
- public static void applyVector(Vector<Date> v1)
- {
-
- }
-
- }
复制代码
|
|