Kotlin中检查null的最佳方式:null比较、安全调用还是Elvis操作符?
大家好,同事们!我最近从Java开始学习Kotlin,遇到了选择正确null检查方式的问题。在Kotlin中,据我所知有很多不同的方法,我困惑于哪一种被认为是“最佳实践”。
例如,我有这样的代码:
```kotlin
data class User(val name: String?, val email: String?)
fun printUserName(user: User?) {
// 选项1:if检查
if (user != null) {
println(user.name)
}
// 选项2:使用?.let
user?.let {
println(it.name)
}
// 选项3:使用!!
println(user!!.name)
}
```
第一个选项对我来说太冗长,第二个不习惯,而第三个我知道不应该使用,因为它可能抛出NPE。但在不同情况下应该选择哪个呢?
另外,我经常在别人的代码中看到使用Elvis操作符`?:`配合`throw`或`return`。什么时候这样做合适?不同方法在性能上有什么建议吗?