как Int против toInt() , в чем разница между ними?

#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 и даже не проверял. Хорошо, что это на самом деле не может.