我在运行时遇到问题来编译这段代码,这向我抛出了一个错误,即 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;
    }

最佳答案

您可以按照以下方式进行,但我建议您使用 Generics

x = ((Integer) listabc.get(0) * 100 / total);

如果您使用了下面的泛型,则不需要任何转换。
List<Integer> listabc
HashMap<String, Integer> hashmap
x = listabc.get(0) * 100 / total;

在这种情况下,您不需要任何类型转换。引入 Integer、Double 等包装类的原因之一是为了避免强制转换。

关于java.lang.ClassCastException : java. lang.Integer 不能转换为 java.lang.Double,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15036340/

10-11 22:22
查看更多