免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

Spring中如何獲取泛型信息的技巧

Spring中如何獲取泛型信息的技巧?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!

創新互聯建站是一家集網站建設,巨野企業網站建設,巨野品牌網站建設,網站定制,巨野網站建設報價,網絡營銷,網絡優化,巨野網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。

獲取泛型

自己解析

我們之前的處理方式,代碼來源 vjtools(江南白衣)。

/**
 * 通過反射, 獲得Class定義中聲明的父類的泛型參數的類型.
 * 
 * 注意泛型必須定義在父類處. 這是唯一可以通過反射從泛型獲得Class實例的地方.
 * 
 * 如無法找到, 返回Object.class.
 * 
 * 如public UserDao extends HibernateDao<User,Long>
 * 
 * @param clazz clazz The class to introspect
 * @param index the Index of the generic declaration, start from 0.
 * @return the index generic declaration, or Object.class if cannot be determined
 */
public static Class getClassGenericType(final Class clazz, final int index) {

    Type genType = clazz.getGenericSuperclass();

    if (!(genType instanceof ParameterizedType)) {
        logger.warn(clazz.getSimpleName() + "'s superclass not ParameterizedType");
        return Object.class;
    }

    Type[] params = ((ParameterizedType) genType).getActualTypeArguments();

    if ((index >= params.length) || (index < 0)) {
        logger.warn("Index: " + index + ", Size of " + clazz.getSimpleName() + "'s Parameterized Type: "
                + params.length);
        return Object.class;
    }
    if (!(params[index] instanceof Class)) {
        logger.warn(clazz.getSimpleName() + " not set the actual class on superclass generic parameter");
        return Object.class;
    }

    return (Class) params[index];
}

ResolvableType 工具

從 Spring 4.0 開始 Spring 中添加了 ResolvableType 工具,這個類可以更加方便的用來回去泛型信息。
首先我們來看看官方示例:

private HashMap<Integer, List<String>> myMap;

public void example() {
    ResolvableType t = ResolvableType.forField(getClass().getDeclaredField("myMap"));
    t.getSuperType(); // AbstractMap<Integer, List<String>>
    t.asMap(); // Map<Integer, List<String>>
    t.getGeneric(0).resolve(); // Integer
    t.getGeneric(1).resolve(); // List
    t.getGeneric(1); // List<String>
    t.resolveGeneric(1, 0); // String
}

詳細說明

構造獲取 Field 的泛型信息

ResolvableType.forField(Field)

構造獲取 Method 的泛型信息

ResolvableType.forMethodParameter(Method, int)

構造獲取方法返回參數的泛型信息

ResolvableType.forMethodReturnType(Method)

構造獲取構造參數的泛型信息

ResolvableType.forConstructorParameter(Constructor, int)

構造獲取類的泛型信息

ResolvableType.forClass(Class)

構造獲取類型的泛型信息

ResolvableType.forType(Type)

構造獲取實例的泛型信息

ResolvableType.forInstance(Object)

感謝各位的閱讀!看完上述內容,你們對Spring中如何獲取泛型信息的技巧大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注創新互聯行業資訊頻道。

分享題目:Spring中如何獲取泛型信息的技巧
URL分享:http://m.newbst.com/article16/gpigdg.html

成都網站建設公司_創新互聯,為您提供企業網站制作響應式網站品牌網站制作定制開發動態網站Google

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

搜索引擎優化