Kotlin 中的一个感叹号是什么意思?我见过几次,尤其是在使用 Java API 时。
它们被称为平台类型,它们意味着 Kotlin 不知道该值是否可以null,由您决定它是否可以为空。
null
简而言之,问题在于来自 Java 的任何引用都可能为空,而 Kotlin 在设计上是空安全的,它强制用户对每个 Java 值进行空检查,或者使用安全调用 ( ?.) 或非空断言 ( !!)。那些在纯 Kotlin 世界中非常方便的特性,当你不得不在 Kotlin/Java 环境中过于频繁地使用它们时,往往会变成一场灾难。 这就是为什么我们采取激进的方法,让 Kotlin 的类型系统在 Java 互操作方面更加轻松:现在来自 Java 的引用具有特殊标记的类型 – Kotlin Blog
简而言之,问题在于来自 Java 的任何引用都可能为空,而 Kotlin 在设计上是空安全的,它强制用户对每个 Java 值进行空检查,或者使用安全调用 ( ?.) 或非空断言 ( !!)。那些在纯 Kotlin 世界中非常方便的特性,当你不得不在 Kotlin/Java 环境中过于频繁地使用它们时,往往会变成一场灾难。
?.
!!
这就是为什么我们采取激进的方法,让 Kotlin 的类型系统在 Java 互操作方面更加轻松:现在来自 Java 的引用具有特殊标记的类型 – Kotlin Blog