父類如何獲取子類傳遞的泛型

/**
 * 用於接收傳遞的clazz
 */
private Class<T> clazz; // 獲取子類傳遞給他的具體泛型類型
public BaseDaoImpl() {
    // 1獲取子類的class(在建立子類對象的時候,會返回父類的構造方法)
    Class<? extends BaseDaoImpl> clazz = this.getClass(); // Student
    // 2獲取當前類的帶有泛型的父類類型
    ParameterizedType type = (ParameterizedType) clazz.getGenericSuperclass();
    // 3返回實際參數類型(泛型能夠寫多個)
    Type[] types = type.getActualTypeArguments();
    // 4 獲取第一個參數(泛型的具體類)
    clazz = (Class) types[0];
}
相關文章
相關標籤/搜索