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。为什么会这样?这是某种...