我面臨的問題在運行時編譯這段代碼這是拋出一個錯誤,java.lang.Integer不能轉換爲Java.lang.Double。我會更樂意,如果有人幫助我改正這個代碼java.lang.ClassCastException:java.lang.Integer不能轉換爲java.lang.Double
double x;
public Double getMethod() {
HashMap hashmap= new HashMap();
hashmap = SumCal();
List listabc = (List) hashmap.get("abclist");
int total=(Integer) hashmap.get("all_total");
x = (Double) listabc.get(0)*100/total;
return x;
}
這是因爲你不能將整數轉換爲雙精度。它們是兩個不同的類,而不是另一個的子類。最有可能你神祕地從listabc中獲取的元素是一個Integer。 (因爲你依賴於隱式的「拳擊」轉換,所以你將自己搞糊塗了,當你剛剛學習時就不明智了。) – 2013-02-23 02:39:29
在問這樣的問題之前,請看Java中的類層次結構。 – ATrubka 2013-02-23 04:58:44
公平地說,基於C語言通過對兩個基本不相關的概念(數據格式轉換和參考層次操作)使用「cast」(術語和符號)極大地混淆了這個問題。將「float」轉換爲「int」是將「Number」轉換爲「Integer」的完全不同且不相關的概念,例如。 (我不記得在教科書/參考資料中討論過這種令人困惑的二分法,或者在課堂上討論這個問題。) – 2013-02-25 02:36:34