获取当前BaseDAO的子类继承的父类中的泛型

public abstract class BaseDAO<T> {
	
	// 定义一个变量来接收泛型的类型
	private Class<T> clazz = null;
	
//	public BaseDAO(){
//		
//	}

	// 获取T的Class对象,获取泛型的类型,泛型是在被子类继承时才肯定
	{	
		//获取当前BaseDAO的子类继承的父类中的泛型
		// getClass()获取子类的类型
		// getGenericSuperclass()用来获取当前类的父类的类型
		// ParameterizedType表示的是带泛型的类型
		Type genericSuperclass = this.getClass().getGenericSuperclass();
		ParameterizedType paramType = (ParameterizedType) genericSuperclass;
		
		Type[] typeArguments = paramType.getActualTypeArguments();//获取了父类的泛型参数
		clazz = (Class<T>) typeArguments[0];//泛型的第一个参数
		
	}
}

this关键字是指子类的实例java

相关文章
相关标签/搜索