Java 泛型获取实体类型

Cangol 发布于 2016/10/31 18:06
阅读 415
收藏 0

我有这样一个类

class ParserObject<T,R> {
    private T t;
    private R r;
    public ParserObject() {
    }

    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }

    public R getR() {
        return r;
    }

    public void setR(R r) {
        this.r = r;
    }
}



使用者动态的传入T,R 的class,这样的
Class<ParserObject<Boolean,String>>

我怎么能获取到 T,R 实际对应的class (Boolean String)

加载中
1
尚浩宇
尚浩宇
public static Class<Object> getSuperClassGenricType(final Class clazz, final int index) {
    	
    	//返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type。
        Type genType = clazz.getGenericSuperclass();

        if (!(genType instanceof ParameterizedType)) {
           return Object.class;
        }
        //返回表示此类型实际类型参数的 Type 对象的数组。
        Type[] params = ((ParameterizedType) genType).getActualTypeArguments();

        if (index >= params.length || index < 0) {
                     return Object.class;
        }
        if (!(params[index] instanceof Class)) {
              return Object.class;
        }

        return (Class) params[index];
    }



用反射可以很轻松的获取到,
Cangol
Cangol
你这个方法 取到的是Object
Cangol
Cangol
这个方法取不到的
0
Hccake
Hccake
getClass() 
0
返回顶部
顶部