📜  Kotlin类型转换(1)

📅  最后修改于: 2023-12-03 15:02:33.224000             🧑  作者: Mango

Kotlin类型转换

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异常。