为什么我的 MutableLiveData<Long> 可以为空?

Why is my MutableLiveData<Long> nullable?

我想知道为什么我的 elapsed 变量最终是 Long? 而不是 Long。我将其定义为不可为 null,我对其执行的操作 none 可能会导致 null。

仍然得到最后一行的错误:

Operator call corresponds to a dot-qualified call 'elapsed.div(1000.toLong())' which is not allowed on a nullable receiver 'elapsed'.
var startTime: Long = 0
var _elapsedTime = MutableLiveData<Long>(0)
_elapsedTime.value = System.currentTimeMillis() - startTime
val elapsed = _elapsedTime.value
val testVal = elapsed / 1000.toLong()

它最终是Long?,因为方法LiveData.getValue()在Java中被标记为@Nullable

为了 Java 和 Kotlin 之间的互操作性,在 Kotlin 中那个方法 returns 一个可以为 null 的 Long,所以 Long?.

https://kotlinlang.org/docs/reference/java-interop.html#nullability-annotations