kotlin - Kotlin:将双精度转换为整数时出现 ClassCastException?
问题描述
我需要在 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
我不认为这会是一个问题。发生这种情况是否有原因以及如何解决?
解决方案
使用关键字从Double
to 转换Int
永远不会成功。as
它们都扩展了Number
类,也没有扩展另一个,所以这种转换既不是向下转换也不是向上转换。要在 Kotlin 中将 double 转换为 int,您应该使用.toInt()
function。
val aDouble: Double = 2.22222
//val anInt = aDouble as Int // wrong
val anInt = aDouble.toInt() // correct
推荐阅读
- android - 仅使用风味的 analitic-kit 的正确方法?,将 json 文件放入风味文件夹 HAPlugin 找不到文件
- apache-spark-sql - 如何在不分组的情况下每 5 分钟获取最近 1 小时的数据?
- c# - Entity Framework Core 项目迁移失败,调试配置文件不存在
- python - 在 y 增加后做 x
- c# - Newtonsoft.Json 忽略 TypeConverters 和/或 JsonConverters,不管它们是如何被引用的
- javascript - /add-to-cart/test-product1 处的 FieldError
- javascript - ES6 Javascript 的导出文件范围变量
- ios - 无效更新:第 0 节中的项目数无效。数据源首先更新
- javascript - 导入 Chakra UI 时出现此错误
- r - 根据 2 个变量选择案例