1. 程式人生 > >ClassCastException異常的出現原因和解決方法

ClassCastException異常的出現原因和解決方法

ClassCastException是JVM在檢測到兩個型別間轉換不相容時引發的執行時異常。此類錯誤通常會終止使用者請求。在執行任何子系統的應用程式程式碼時都有可能發生ClassCastException異常。通過轉換,可以指示Java編譯器將給定型別的變數作為另一種變數來處理。對基礎型別和使用者定義型別都可以轉換。Java語言規範定義了允許的轉換,其中大多數可在編譯時進行驗證。不過,某些轉換還需要執行時驗證。如果在此執行時驗證過程中檢測到不相容,JVM就會引發ClassCastException異常。
出現這個異常的原因如下:
1.一個類是數字類,而由於誤操作,錯誤的將數字類向數字類轉換改寫成了數字類向字串類的轉換,從而產生了異常。
2.大部分原因是因為強制轉換或者是SQL對映時發生了這個異常。
而我遇到的問題是:

1461:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '0x4c1ae77bc2df45fb68b13fa1b4f000305209b0cb' for key 'contract_address'

是因為sql映射出現了問題:
這是出問題的SQL
這個是interface中
因為sql中返回的是一個 list的實體物件,而接收的則是一個List型別的引數。
雖然查詢的時候沒有報錯,但是後續的時候遍歷查找出來的結果就出錯了。只要改成如下就可以了,一個非常大意的錯誤
這裡寫圖片描述
這樣就可以了。