ClassCastException,将 Integer 转换为 Double

2022-08-31 21:11:02
ArrayList marks = new ArrayList();
Double sum = 0.0;
sum = ((Double)marks.get(i));

每次我尝试运行我的程序时,我都会得到一个ClassCastException,指出:java.lang.Integer不能被转换为java.lang.Double。


答案 1

我们可以将 a 转换为 a,但我们不能对包装类执行相同的操作,并且:intdoubleIntegerDouble

 int     a = 1;
 Integer b = 1;   // inboxing, requires Java 1.5+

 double  c = (double) a;   // OK
 Double  d = (Double) b;   // No way.

这将显示与运行时异常对应的编译时错误。


答案 2

好吧,您显示的代码实际上不包括向中添加任何整数 - 但是如果您确实知道自己有整数,则可以使用:ArrayList

sum = (double) ((Integer) marks.get(i)).intValue();

这会将其转换为 ,然后可以将其转换为 。您不能直接在盒装类之间进行强制转换。intdouble

请注意,如果您可以对 使用泛型,则代码将更清晰。ArrayList


推荐