Java如何获得泛型类的真实类型

public class RealType{
	
	private Class clazz;
	
	// 使用反射技术得到T的真实类型
	public Class getRealType(){
		// 获取当前new的对象的泛型的父类类型
		ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
		// 获取第一个类型参数的真实类型
		this.clazz = (Class) pt.getActualTypeArguments()[0];
		return clazz;
	}
	
}

 

用法简单举例

public class BaseDao{

    private Class clazz;

    // 使用反射技术得到T的真实类型
    public Class getRealType(){
        // 获取当前new的对象的泛型的父类类型
        ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
        // 获取第一个类型参数的真实类型
        this.clazz = (Class) pt.getActualTypeArguments()[0];
        return clazz;
    }

}

class ClassB extends BaseDao{

    public static void main(String[] args) {
        ClassB classB = new ClassB();
        Class realType = classB.getRealType();
        System.out.println(realType.getName());
    }
}

 

你可能感兴趣的:(Java如何获得泛型类的真实类型)