为什么我的 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
我想知道为什么我的 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