设计模式,注解,反射,hook,asp,classloader

Java获取泛型参数的Class类型

2018-02-07  本文已影响42人  Thresh0ld

需求:两个类:A带泛型参数T,B继承A并给出泛型参数类型,现在想在A中获取T的Class类型。

public abstract class A<T> {
    public A() {
        Type genericSuperclass = this.getClass().getGenericSuperclass();
        ParameterizedType parameterizedType = (ParameterizedType) genericSuperclass;
        Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
        Class tClass = (Class) actualTypeArguments[0];

        System.out.println(tClass.getName());

// 用一句话获取就是下面一行代码,只是去除了中间变量,可读性差了些
//        Class tCls = (Class) (((ParameterizedType) (this.getClass().getGenericSuperclass())).getActualTypeArguments()[0]);
    }
}
public class B extends A<String> {
}

执行一下代码:

public static void main(String[] args){
     new B();//控制台会输出java.lang.String
}
上一篇下一篇

猜你喜欢

热点阅读