Java获取当前类泛型T的类型 T.class

2021-08-27  本文已影响0人  我要进大厂

这个处于我想拿T.class去将jdbc查询出来的ResultSet的每列数据 ,通过反射set到T对象对应的成员变量里面。

第一种方式:构造器传入T.class

public class GenericType<T> {

    public Class<T> class2;

    public GenericType(Class<T> class2) {
        this.class2 = class2;
    }

    public void useGenericType() {
             System.out.println(class2);
    }

    public static void main(String[] args) {
        GenericType<String> stringGenericType = new GenericType<>(String.class);
        stringGenericType.useGenericType();
    }
}  

第二种方式:通过继承 + 反射获取

我这里用了匿名内部类继承

public abstract class GenericType2<T> {

    public Class<T> class2;

    public Class<T> getTClass() {
        class2 = (Class<T>) ((ParameterizedType)this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
        return class2;
    }

    public void useGenericType() {
        System.out.println(getTClass());
    }

    public static void main(String[] args) {
        //  new GenericType2<String>() {}; 匿名内部类
        GenericType2<String> stringGenericType = new GenericType2<String>() {};
        stringGenericType.useGenericType();
    }
}
上一篇下一篇

猜你喜欢

热点阅读