1. 程式人生 > >Java基礎學習02——通過泛型獲得Class,類似T.class

Java基礎學習02——通過泛型獲得Class,類似T.class

今天寫程式碼遇到了一個問題,我需要在通過泛型T獲取它的class,但是T.class不能用,所以才有了一下內容。

話不多說直接上程式碼


public abstract class BaseController<S extends BaseService<T> , T extends BaseEntity , V extends BaseVO> {

    /**
     * 獲取泛型對相應的Class物件
     * @param index
     * @return
     * @author 劉朋
     * <br/>date 2018-11-12
     */
    public Class<T>  getTClass(){
        //返回表示此 Class 所表示的實體(類、介面、基本型別或 void)的直接超類的 Type。
        ParameterizedType type = (ParameterizedType)this.getClass().getGenericSuperclass();
        //返回表示此型別實際型別引數的 Type 物件的陣列(),想要獲取第二個泛型的Class,所以索引寫1
        return (Class)type.getActualTypeArguments()[1];//<T>
    }

}

上邊的程式碼中,我定義了三個泛型,現在我需要獲取第二個泛型的Class物件,就用到了getTClass方法,希望能夠幫到大家。