Kotlin: ClassCastException при приведении двойного к целому числу? - PullRequest
0 голосов
/ 05 января 2019

Мне нужно сделать цикл 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

Не думаю, что это будет проблемой. Есть ли причина, по которой это происходит и как это исправить?

1 Ответ

0 голосов
/ 07 января 2019

Приведение с Double на Int никогда не будет успешным при использовании ключевого слова as. Они оба расширяют класс Number и ни один не расширяет другой, так что этот каст не является ни понижающим, ни понижающим. Для преобразования double в int в Kotlin вы должны использовать функцию .toInt().

val aDouble: Double = 2.22222
//val anInt = aDouble as Int // wrong
val anInt = aDouble.toInt() // correct
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...