#kotlin
#kotlin
Вопрос:
У меня вопрос
fun main(args : Array<String>){
val aa = "1"
val bb = aa.toInt() // <----- no problem
println(bb)
var cc = "1"
var dd = cc as Int // <----- exception
println(dd)
}
если я использую as
, то что происходит…
Компилятор: исключение в потоке «main» java.lang.ClassCastException: класс java.lang.Строка не может быть приведена к классу java.lang.Целое число (java.lang.String и java.lang.Целое число находится в модуле java.base загрузчика ‘bootstrap’) в MainKt.main(main.kt:7)
Комментарии:
1.
toInt()
преобразуется вInt
.as Int
просто пытается выполнить приведение кInt
, что недопустимо для этих двух типов, поскольку указано исключение.
Ответ №1:
as Int
приводит к типу что-то, что уже является Int Int
.
val x:Any = 5
val xInt = x as Int
.toInt()
анализирует строку, представляющую Int .
Комментарии:
1. @AlexeyRomanov должно быть, это уже целое число, которое вы не можете преобразовать
Long
вInt
с помощью as, там нет отношений наследования.2. Я предположил, что Kotlin унаследовал это уродство от Java и даже не проверял. Хорошо, что это на самом деле не может.