我面临的问题在运行时编译这段代码这是抛出一个错误,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