📅  最后修改于: 2023-12-03 15:02:33.224000             🧑  作者: Mango
Kotlin是一种静态类型语言,它使用类型转换来将一个数据类型转换为另一个数据类型。本文将介绍Kotlin中常见的类型转换。
Kotlin中的基本类型转换非常简单,可以使用强制类型转换(casting)操作符实现。如果转换失败,将抛出ClassCastException异常。
例如,将一个Int类型转换为Long类型:
val i: Int = 1
val l: Long = i.toLong()
使用基本类型的强制类型转换操作符将调用相应的Java方法,但Kotlin中还提供了另一种类型转换方式,即安全的downcasting操作符“as?”。
当我们需要将一个父类引用转换为一个子类引用时,使用“as?”操作符可以避免ClassCastException异常。如果转换失败,该操作符将返回null。
例如,将一个Animal类型转换为Dog类型:
open class Animal
class Dog : Animal()
val animal: Animal? = Animal()
val dog: Dog? = animal as? Dog
在上面的示例中,由于animal引用的是Animal对象,无法进行转换。因此,dog变量的值为null。
在Kotlin中,!和?都是用于类型转换的关键字,但它们之间有一个明显的区别。
“!“表示类型可以为空,”?“表示类型不能为空。
例如,以下代码将Int类型转换为String类型,其中“toString()”返回的是一个String?类型:
val i: Int? = null
val s: String? = i?.toString()
在上面的示例中,由于i引用的是null对象,因此s引用的也是null对象。
如果我们使用“!”
val i: Int? = null
val s: String = i.toString() // 抛出NullPointerException异常
在上面的示例中,由于i引用的是null对象,在调用“toString()”方法时,将抛出NullPointerException异常。