【问题标题】:as Int vs toInt(), what's the difference between the two?作为 Int 与 toInt(),两者有什么区别?
【发布时间】:2021-02-12 18:48:42
【问题描述】:

我有问题


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.String 无法转换为类 java.lang.Integer(java.lang.String 和 java.lang.Integer 在模块 java.lang.Integer 中)加载程序“引导程序”的基础) 在 MainKt.main(main.kt:7)

【问题讨论】:

  • toInt() 转换为 Intas Int 只是尝试转换为 Int,这对这两种类型无效,因为异常状态。

标签: kotlin


【解决方案1】:

as Int 将已经是 Int 的东西转换为 Int 类型。

val x:Any = 5
val xInt = x as Int

.toInt() 解析一个表示 Int 的字符串。

【讨论】:

  • @AlexeyRomanov 它必须已经是一个 Int 你不能将 Long 转换为 Int 与 as,那里没有继承关系。
  • 我认为 Kotlin 继承了 Java 的丑陋,甚至没有检查。很好,它实际上不能。
猜你喜欢
  • 2021-12-17
  • 2011-04-06
  • 2019-01-12
  • 1970-01-01
  • 2016-01-24
  • 2013-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多