1. 程式人生 > >Exception:java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

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

最近開始著手做一個專案,專案環境用的是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

最近開始著手做一個專案,專案環境用的是spring4.2,struts2.3.1,hibernate4.3.0....一切都配置正常,所有的POJO類都佈置好。service層和dao層也抽取了,可是在測試的時候,竟然報以一個錯誤 ,java.lang.ClassCastException: java.lan

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

java.lang.ClassCastException: xxx.bean.XXX cannot be cast to xxx.bean.YYY

java.lang.ClassCastException: com.hahah.atcrowdfunding.bean.User cannot be cast to com.hahah.atcrowdfunding.bean.Role result寫錯了,應該是re

2類型轉換異常:Exception in thread "main" java.lang.ClassCastException:java.lang.Object cannot be cast to java.lang.Integer

cnblogs color pan rgs main string [] 類型 style public class TestException { public static void main(String[] args) { Object obj

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

protocol lang base arr ava ebs reat rac context 1、錯誤描寫敘述java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Str

java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer

在開發中,遇到這麼一個錯誤: 報錯的意思: Long 無法轉化成Integer型別. 網上的解釋是:     這裡在Hibernate2.0之前版本list.get(0)返回的是Integer型別.但是在Hibernate3.0以後版本list.ge

java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long

MySQL更新到8.0.11之後連線資料庫時會報出錯誤 Your login attempt was not successful, try again. Reason: Could not get JDBC Connection; nested exception is java.sql.SQ

java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to java.lang.Int

異常:java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to java.lang.Integer 原因:SQL查詢結果為count()統計結果個數,gson返回資料為js

ArrayMap java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Object[]

錯誤堆疊: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Object[] at android.support.v4.util.SimpleArra

關於 java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String

今天遇到了這個異常,其實是自己經驗欠缺所致。我是通過mybatis查詢到資料庫傳過來的主鍵,是一個32位的char型別。 程式碼: //查詢總賬表的該組織總賬記錄,包括該條記錄的主鍵id、賬戶餘額DzzZzb zzbInfo = null;Map map = (Map) IbatisSQL.selectO

“無效數字” ;java.lang.Integer cannot be cast to java.lang.String

現在 類型 bsp 字段 ann 不難 esc ger ring 今天頁面上突然查詢不出數據,大致的sql語句是 select xx ,xxx from table a where a.lrmb in ( 6101060033, 6101

java.math.BigDecimal cannot be cast to java.lang.String

bigdecimal BigDecimal表示一個大整數,一般情況下很多整型都有個最大值的,但是有時候我們需要處理一些超過這個最大值的值,這個時候就出現了BigDecimal這樣的類用於表達大數值,這個錯誤應該是類型轉換過程中出現了問題.數據從數據庫中取出的,把數據庫中的整數轉成了BigDecimal 類型

java.lang.Integer cannot be cast to java.lang.String

.com ger 調用 str 覆蓋 方法 pan 解決辦法 ava 錯誤原因是類型轉換! 說Integer 類型不能轉成String類型。 解決辦法:   將錯誤中的(String)強制轉換類型修改為 object.toString()   

java.lang.ClassCastException: com.github.pagehelper.PageHelpercannot be cast to org.apache.Intercept

使用pagehelper外掛時出現的異常。 我原先mybatis的配置如下 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Con

Java報錯:java.math.BigDecimal cannot be cast to java.lang.String

從資料庫取count、sum等函式的值需要轉化成Integer的時候出現 java.math.BigDecimal cannot be cast to java.lang.String的報錯 錯誤程式碼: Integer.parseInt((String)map.get("id"

java.lang.String cannot be cast to java.lang.Long at android.app.SharedPreferencesImpl.getLong(Share

今天在開發過程中遇到一個問題:從Git上拉下程式碼後,點選登入程式就崩潰了,而且是必現。貼下列印的Log 打碼的地方是公司程式碼中的包名,不影響顯示問題。 可以看到最關鍵的兩句: java.lang.ClassCastException: java.lang.Str

tomcat java.math.BigDecimal cannot be cast to java.lang.Double

將資料庫中數值型取出儲存到 map<String,Object>中,需要進行數值運算,轉成double型別時丟擲ava.math.BigDecimal cannot be cast to java.lang.Double 解決辦法; 1.轉成string String num

java.lang.Integer cannot be cast to java.lang.String Java int,double向String的轉化和String向int,double的轉換

 count=Integer.parseInt( (String)all.get(0)); 執行時報錯:java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String 解決方

連接Mysql時出現java.math.BigInteger cannot be cast to java.lang.Long問題

類型 spa integer 一個 lan jar包版本 連接 mysql8 family   今天遇見這樣一個坑。在連接數據庫進行查詢數據時,大家可能會遇見這樣一個問題:java.math.BigInteger cannot be cast to java.lang.Lo

java.lang.String cannot be cast to java.lang.Integer解決辦法

今天寫SSM框架時候,後臺介面報錯,控制檯輸出java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer,如下圖: 報錯原因是因為型別轉換錯誤,不能將String型別轉化成Intege