如何得到泛型的代表的实际参数

得到泛型的实际类型,使用对象或者字段是不能得到的,要使用方法参数的形式,也就是说通过将带泛型的集合等类型传入一个方法,再通过得到该方法的参数化类型,从而拿到泛型的实际类型

自己写的例子:

package cn.itheima.Demo;

import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

public class getreflectGenri {

	/**
	 * 
	 * 想要得到泛型的具体类型,
	 * 必须使用反射出方法参数里的泛型才能得到泛型的具体类型,
	 * 因为如果你使用字段,在进行编译的时候会进行泛型擦除,从而得不到想要的类型
	 * 泛型擦除后,所有的类型都是一样
	 * 如果我们想要得到某个集合中的泛型,可以构造一个方法,将带泛型的集合放入其中,通过得到
	 * 该方法的参数类型,就可以得到具体的泛型类型,
	 * @param args
	 * @throws NoSuchMethodException 
	 * @throws SecurityException 
	 */
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		
		//List<Integer> list = new ArrayList<Integer>();
		
		getreflectGenri gfg = new getreflectGenri();
		
		Method method = gfg.getClass().getMethod("apply", List.class);
		
		//得到泛型参数化类型,返回一个数组
		Type[] types = method.getGenericParameterTypes();
		
		//由于这里只是有一个参数,所以得到该参数,类型为参数化类型ParameterizedType
		 
		ParameterizedType pt = (ParameterizedType) types[0];
		
		System.out.println(pt.getRawType());
		
		//得到具体泛型类型
		
		System.out.println(pt.getActualTypeArguments()[0]);
     

	}
	public static void apply(List<Integer> list){
		
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值