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。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯