【发布时间】:2019-01-07 15:45:17
【问题描述】:
我需要在 Kotlin 中做一个 for 循环:
for (setNum in 1..(savedExercisesMap[exerciseKey] as HashMap<*, *>)["sets"] as Int){
但我收到此错误:
java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer
我认为这不是问题。发生这种情况是否有原因以及如何解决?
【问题讨论】:
-
尝试
toInt()函数,例如(savedExercisesMap[exerciseKey] as HashMap<*, *>)["sets"].toInt() -
@Sergey 未解决的参考...
-
能否提供完整代码:
savedExercisesMap、exerciseKey等 -
异常信息非常清楚:您正在尝试将 Double 转换为 Integer。您当然可以将其转换为 Double,然后在该 Double 上调用 toInt() 以将其转换为 Int,但实际上,这在您的代码中显示了一个很大的设计问题:如果它应该是一个 Int,为什么会这样?双倍?最重要的是,Kotlin 是一种类型安全的语言,为什么需要这么多强制转换来做你想做的事?