獲取當前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

相關文章
相關標籤/搜索