Avatar ·

Kotlin 中的感叹号是什么意思?(单个感叹号)

大家好!我最近从 Java 开始学习 Kotlin,有一件事让我很困惑。在代码的某些地方,我看到数据类型后面有一个单个感叹号,例如 `String!` 或 `List!`。我知道 Kotlin 严格区分可空(`String?`)和非空(`String`)类型,但 `String!` 是什么?我在官方文档中没有找到这个。 下面是我项目中一个连接 Java 库的例子: ```kotlin // Java 代码 public class JavaClass { public static String getString() { return null; // 可能返回 null } } // Kotlin 代码 fun main() { val result: String! = JavaClass.getString() // IDE 显示 String! println(result.length) // 这里我期望编译错误,但没有 } ``` IDE(IntelliJ IDEA)显示变量 `result` 的类型为 `String!`。我尝试将 `result` 当作普通字符串使用,编译器没有报错,但在运行时我得到了 NullPointerException。为什么会这样?这是某种...