2016-05-17 75 views
0

我的工作一直在被拋出以下錯誤的項目(名稱混淆)的Android拋出比較短的時候拋出ClassCastException字面

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Short 
     at com.package.myproject.Object.method(Object.java:656) 

的問題是,導致錯誤看起來像這樣的線路。

if ((fileVerMaj.value > 1 || (fileVerMaj.value == 1 && fileVerMin.value >= 24))) 

這裏的變量都是Short類型。此代碼適用於在Eclipse中編譯時編譯,但在Android Studio中編譯時不適用。爲了解決這個問題,我嘗試了使用Short對象的intValue()方法並將文字轉換爲短褲(primitve類型和Object)。沒有什麼改變了行爲。

我需要一些Android Studios功能來正確編譯這個項目,但我對這裏發生的事情沒有想法。

+0

這是不足以澄清任何事情的代碼。 –

+0

「我試過使用Short對象intValue()」 - 應該已經工作了。 「把文字寫成短褲」 - 也應該起作用。 - 我第二@MuratK。因爲你的代碼可能不夠完整,無法傳達實際問題。 – JimmyB

+0

也許它與JDK版本或其他內容有關,與Android Studio無關。檢查在AS和Eclipse中使用的JDK版本。所有在Android Studio 2.1.1和JDK 7中均可正常工作,無需任何手動投射。 – comrade

回答

0

可以嘗試更換如果與:

if ((fileVerMaj.value.comapreTo(new Short((short) 1)) > 0 || (fileVerMaj.value.compareTo(new Short((short) 1)) == 0 && fileVerMin.value.compareTo(new Short((short) 24)) >= 0))) 

CompareTo方法返回一個負值如果呼籲對象是小於參數,0,如果它們是相等的,並且如果其大於正值參數。所有這些說比較對於它的功能有點矯枉過正。你能解釋爲什麼你需要使用短值而不是原始短褲甚至整數?

+0

我正在使用這些變量來存儲從文件頭中讀取的數據。數據碰巧是16位。更改代碼將數據讀入整數將是一個相當複雜的過程。 – Blazerhawk

相關問題