Exception:java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

來源:互聯網
上載者:User

標籤:ict   大神   ack   cas   問題解決   環境   div   3.1   length   

最近開始著手做一個項目,項目環境用的是spring4.2,struts2.3.1,hibernate4.3.0....一切都配置正常,所有的POJO類都布置好。service層和dao層也抽取了,可是在測試的時候,竟然報以一個錯誤 ,java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType,,,調試了好久,都沒有找出方法,後來看了woshisap大神的部落格再把問題解決,故貼上大神的代碼 :

Class<T> entityClass = (Class<T>)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];
出現:java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType 使用以下工具類方法擷取
1 package cn.pconline.prolib.util; 2 import java.lang.reflect.ParameterizedType;   3 import java.lang.reflect.Type;   4    5 public class GenericsUtils {   6     /**    7      * 通過反射,獲得定義Class時聲明的父類的範型參數的類型.    8      * 如public BookManager extends GenricManager<Book>    9      *   10      * @param clazz The class to introspect   11      * @return the first generic declaration, or <code>Object.class</code> if cannot be determined   12      */  13     public static Class getSuperClassGenricType(Class clazz) {  14         return getSuperClassGenricType(clazz, 0);  15     }  16   17     /**   18      * 通過反射,獲得定義Class時聲明的父類的範型參數的類型.   19      * 如public BookManager extends GenricManager<Book>   20      *   21      * @param clazz clazz The class to introspect   22      * @param index the Index of the generic ddeclaration,start from 0.   23      */  24     public static Class getSuperClassGenricType(Class clazz, int index) throws IndexOutOfBoundsException {  25   26         Type genType = clazz.getGenericSuperclass();  27   28         if (!(genType instanceof ParameterizedType)) {  29             return Object.class;  30         }  31   32         Type[] params = ((ParameterizedType) genType).getActualTypeArguments();  33   34         if (index >= params.length || index < 0) {  35             return Object.class;  36         }  37         if (!(params[index] instanceof Class)) {  38             return Object.class;  39         }  40         return (Class) params[index];  41     }  42 }  

最後在需要調用的地方鍵入以下代碼:

Class<T> entityClass = GenericsUtils.getSuperClassGenricType(BasicService.class, 0);

Exception:java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.