📜  Kotlin 类型转换(1)

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

Kotlin 类型转换

在 Kotlin 中,类型转换是将一个数据类型转换为另一个数据类型的过程。类型转换用于将一个数据类型的值赋值给另一个数据类型的变量,或将一个数据类型的值作为参数传递给另一个数据类型的函数。

1. as

在 Kotlin 中,使用 as 关键字进行类型转换。如果试图将一个不兼容的类型转换为另一个类型,则会抛出一个 ClassCastException 异常。

以下代码演示如何使用 as 进行类型转换:

val str: Any = "Hello, World!"
val result: String = str as String

在此示例中,我们将 Any 类型的变量 str 强制转换为 String 类型,并将其分配给另一个 String 类型的变量 result。如果 str 不是 String 类型,则会抛出 ClassCastException 异常。

2. as?

Kotlin 还提供了一个安全转换运算符 as?,如果不兼容的类型,则会返回一个 null 值,而不是抛出异常。例如:

val str: Any = 123
val result: String? = str as? String

在此示例中,我们将一个 Int 类型的变量强制转换为 String 类型。由于两者不兼容,因此返回一个 null 值,不会抛出异常。

3. is

is 是一个运算符,用于检查一个对象是否为特定类型的实例。如果是,则返回 true,否则返回 false。例如:

fun processString(str: Any) {
    if (str is String) {
        println(str.length)
    } else {
        println("Not a string")
    }
}

在此示例中,processString 函数接收一个 Any 类型的参数 str。如果 str 是一个 String 类型的实例,则打印其长度,否则打印“Not a string”。

4. !is

!is 运算符用于检查一个对象是否不是特定类型的实例。如果不是,则返回 true,否则返回 false。例如:

fun processNumber(num: Any) {
    if (num !is String) {
        println(num.toDouble())
    } else {
        println("Not a number")
    }
}

在此示例中,processNumber 函数接收一个 Any 类型的参数 num。如果 num 不是一个 String 类型的实例,则将其转换为 Double 类型并打印其值,否则打印“Not a number”。

总结

本文介绍了 Kotlin 中的类型转换和检查运算符。我们学习了如何使用 asas? 进行类型转换,以及如何使用 is!is 进行类型检查。这些工具是在处理多层继承或多个接口实现时非常有用的。