Avatar ·

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`。什么时候这样做合适?不同方法在性能上有什么建议吗?