获取java类中泛型的Class汇总

一,当前类沿用泛型接口

需要一个属性用来保存泛型的Class,生成对象时通过构造器指定

二,父类是泛型抽象类,当前类继承并指定了父类泛型

getClass() 的对象为ProductTemplateFactory.class;

getGenericSuperclass()是获取父类的ParameterizedType类型

getActualTypeArgumnets() 是获取父类上所有的泛型类型,其中两个泛型我们都是指定了的,因此可以获得两个泛型实际的class类型

0是获得的泛型I指定的class类型

1是获得的泛型A指定的class类型

三,直接实现泛型接口类,实现类时指定了接口泛型

子类实现接口并指定了S泛型为Map

文中的Class对象为MapToEntityConvert.class

getGenericInterfaces()是获取所有接口的ParameterizedType类型,按照我们实现的接口的顺序来取,第1个取0

四,获取方法上的泛型参数

ParameterizedType parameterType = (ParameterizedType) declaredMethod.getGenericParameterTypes()[0];//获取第1个参数

Class actualTypeArgument = (Class) parameterType.getActualTypeArguments()[0]; //获取参数中的第一个泛型

Copyright © 2022 破界远征沙盒工坊 All Rights Reserved.