A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

需求:Collection<Date> con = new ArrayList<Date>(); 则 如何通过反射的方式或的<>中的参数类型?
  1. /**
  2. * 需求:得到泛型 中的类型
  3. * 比如
  4. * Vector<Date> v = new Vactor<Date>();
  5. * 则泛型中的参数类型为Date
  6. *  
  7. *
  8. */
  9. package test;
  10. import java.lang.reflect.*;
  11. import java.util.*;
  12. public class GetType
  13. {

  14.         public static void main(String[] args) throws Exception
  15.         {
  16.                  //第二步:通过反射得到第一步的方法
  17.                 Method applyMethod = GetType.class.getMethod("applyVector", Vector.class);
  18.                 //第三步:通过反射得到该方法的参数列表
  19.                 Type [] types = applyMethod.getGenericParameterTypes();
  20.                 //第四步:得到第一个参数
  21.                 ParameterizedType pType = (ParameterizedType)types[0];
  22.                 //得到原始类型参数
  23.                 System.out.println(pType.getRawType());
  24.                 //得到泛型参数
  25.                 System.out.println(pType);
  26.                 //得到实际化的类型参数(可能有多个,比如HashMap<K,V>集合,所以用数组接受)
  27.                 Type [] ts = pType.getActualTypeArguments();
  28.                 for (Type type : ts) {
  29.                         System.out.println(type);
  30.                 }
  31.                

  32.         }
  33.         //第一步:首先定义一个方法:
  34.         public static void applyVector(Vector<Date> v1)
  35.         {
  36.                
  37.         }
  38.        

  39. }
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马