智能类型转换

2024 年 8 月 29 日 | 阅读 2 分钟

我们在之前的教程Kotlin可空类型和不可空类型中看到了如何声明可空类型。为了使用这些可空类型,我们可以选择使用智能类型转换。智能类型转换是Kotlin编译器跟踪if表达式内部条件的一个特性。如果编译器发现一个变量不是可空类型,那么编译器将允许访问该变量。

例如

当我们尝试在没有安全类型转换的情况下访问String的可空类型时,它将生成一个编译错误。

为了解决上述表达式,我们使用安全类型转换如下:

输出

6

在使用is!is 检查变量时,编译器会跟踪这些信息,并在内部将变量转换为目标类型。这在 is!is 返回true的范围内完成。

使用is进行智能类型转换

输出

String length is 64

使用!is进行智能类型转换

输出

String length is 64

智能类型转换根据以下条件工作