【发布时间】:2018-12-25 19:21:29
【问题描述】:
试图理解 Kotlin 中的 null 安全性:以下两个语句似乎都可以正常工作并且在我的程序中可以互换:
var y1: Double = 0.0
get() = when(hasParent) {
true -> parent!!.y1
else -> field
}
和
var y1: Double = 0.0
get() = parent?.y1!!
(hasParent 只是一个查看parent 是否为空的getter)
这两个在语义上是否相同,或者它们实际上是不同的表达方式,意味着不同的事物?如果它们在语义上的意思相同,那么出于某种原因,第一个是否优于第二个?
【问题讨论】:
-
第二种形式与第一种不同,不正确。如果
parent为空,您将得到NullPointerException。parent?.y1 ?: field相当于第一种形式。 -
您能否将其移至答案以便我接受?
标签: nullpointerexception kotlin type-safety kotlin-null-safety