Kotlin:将双精度转换为整数时出现 ClassCastException?

Sla*_*ion 4 casting kotlin

我需要在 Kotlin 中做一个 for 循环:

for (setNum in 1..(savedExercisesMap[exerciseKey] as HashMap<*, *>)["sets"] as Int){
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer
Run Code Online (Sandbox Code Playgroud)

我不认为这会是一个问题。发生这种情况是否有原因以及如何解决?

Mah*_*alv 8

使用关键字从Doubleto 转换Int永远不会成功as。它们都扩展了Number类,也不扩展另一个,所以这个转换既不是向下转型也不是向上转型。要在 Kotlin 中将 double 转换为 int,您应该使用.toInt()function。

val aDouble: Double = 2.22222
//val anInt = aDouble as Int // wrong
val anInt = aDouble.toInt() // correct
Run Code Online (Sandbox Code Playgroud)