首页 > 代码库 > 获取泛型类型工具类
获取泛型类型工具类
Java泛型在编译阶段会进行泛型擦除,所以能够在运行期获得的泛型是在编译阶段已经确定(继承的泛型类)了的。
1 public class GenricUtils { 2 /** 3 * 获得泛型类型 4 * @param clz 5 * @return 6 */ 7 public static <T> Class<T> getGenricClassType(Class clz){ 8 Type type = clz.getGenericSuperclass(); 9 if(type instanceof ParameterizedType){10 ParameterizedType pt = (ParameterizedType) type;11 Type[] types = pt.getActualTypeArguments();12 if(types.length > 0 && types[0] instanceof Class){13 return (Class) types[0];14 }15 }16 return (Class) Object.class;17 }18 }
比如:
1 class TestA<T>{2 private Class<T> clz = GenricUtils.getGenricClassType(TestA.class);3 public void get(String id){4 session.get(clz,id);5 }6 }7 class TestB extends TestA<String>{8 }
在执行:
System.out.println(getGenricClassType(TestA.class));System.out.println(getGenricClassType(TestB.class));
输出的结果分别为:
class java.lang.Objectclass java.lang.String
获取泛型类型工具类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。