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