通常是什麼原因得到java.lang.ClassCastException ..?我碰到下面的錯誤在我的應用java.lang.ClassCastException
java.lang.ClassCastException: [Lcom.rsa.authagent.authapi.realmstat.AUTHw
通常是什麼原因得到java.lang.ClassCastException ..?我碰到下面的錯誤在我的應用java.lang.ClassCastException
java.lang.ClassCastException: [Lcom.rsa.authagent.authapi.realmstat.AUTHw
拋出,表明代碼試圖施放一個Object
到它的子類 它不是一個實例。例如,下面的代碼生成一個ClassCastException
:
Object x = new Integer(0);
System.out.println((String)x);
對於documentaton。例外的文件通常會給出一個很好的暗示,可能是錯誤的。 – 2010-08-18 10:46:57
+1文件!如果你不想一直使用谷歌,你可以下載java庫的源代碼(或者搜索你的java sdk文件夾中是否有src.zip)。然後,如果你將它鏈接到你的項目,你可以打開相關的文件,並閱讀那裏的javadoc ... – 2010-08-18 15:16:27
bine Laur,ce mic e internetul :) – ieugen 2013-07-24 06:01:38
這是因爲你鑄造錯誤的事情 - 你想轉換爲特定的類型,以及您的明確指的對象是與該類型不相容。例如:
Object x = "this is a string";
InputStream y = (InputStream) x; // This will throw ClassCastException
如果你能提供一個代碼示例,這將真正幫助...
ClassA a = <something>;
ClassB b = (ClassB) a;
的第二線將失敗如果ClassA的不是ClassB的的一個子類,並且將拋出ClassCastException。
@LaurenţiuDascălu的答案解釋了/爲什麼得到一個ClassCastException。
您的異常消息對我來說看起來相當可疑,但它可能會幫助您知道「[Lcom.rsa.authagent.authapi.realmstat.AUTHw」表示您嘗試投射的對象的實際類型是com.rsa.authagent.authapi.realmstat.AUTHw[]
;即它是一個數組對象。
通常情況下,接下來的步驟來解決這樣的問題是:
A ClassCastException
ocurrs當您嘗試將對象的實例強制轉換爲不是的對象類型時。鑄造僅在鑄造物件遵循與您要鑄造的類型「是一種」關係時纔有效。例如
Apple myApple = new Apple();
Fruit myFruit = (Fruit)myApple;
這是有效的,因爲蘋果'是'水果。但如果我們扭轉這一點。
Fruit myFruit = new Fruit();
Apple myApple = (Apple)myFruit;
這將拋出ClasCastException,因爲Fruit不是(總是)Apple。
這是很好的做法,以防範任何顯式轉換與instanceof
首先檢查:
if (myApple instanceof Fruit) {
Fruit myFruit = (Fruit)myApple;
}
如果最後一個例子更改爲'if(myFruit instanceof Apple){Apple myApple =(蘋果)myFruit; }',它會更具說明性 – AnnabellChan 2016-07-12 03:23:03
爲了避免x !instance of Long
概率 添加
<property name="openjpa.Compatibility" value="StrictIdentityValues=false"/>
在你的持久性。xml
看起來你沒有完整的異常消息。假設你使用的是Java 5或更高版本,這個例外應該包括*什麼*不能被轉換成*什麼*例如'java.lang.ClassCastException:java.lang.String不能轉換爲java.lang.Integer' – mikej 2010-08-18 10:45:10