Kotlin中的!!(双感叹号)运算符是做什么的,什么时候应该使用它?
大家好!我刚从Java开始学习Kotlin,一直搞不懂`!!`运算符。Kotlin以null-安全著称,但这个双感叹号,据我理解,反而可能引发NullPointerException。
我正在写一个简单的笔记应用。我有一个函数,根据ID在数据库中查找用户并返回其姓名。如果找不到用户,则返回null。以下是示例代码:
```kotlin
fun getUserName(userId: Int): String? {
// 如果找不到用户,返回null
return database.findUser(userId)?.name
}
```
然后我调用这个函数,想把姓名显示在TextView中:
```kotlin
val name = getUserName(123)
textView.text = name // 错误:类型不匹配。需要:String,找到:String?
```
编译器报错,说name可能为null。我在网上查到可以使用`!!`:
```kotlin
textView.text = name!!
```
但我不明白:那所有这些null-