【发布时间】:2019-10-07 15:44:59
【问题描述】:
我想知道为什么一个大小为 1 的 null 数组而不是可选的:
原码:
@Throws(InterruptedException::class)
fun <T> getValue(liveData: LiveData<T>): T {
val data = arrayOfNulls<Any>(1)
val latch = CountDownLatch(1)
val observer = object : Observer<T> {
override fun onChanged(o: T?) {
data[0] = o
latch.countDown()
liveData.removeObserver(this)
}
}
liveData.observeForever(observer)
latch.await(2, TimeUnit.SECONDS)
return data[0] as T
}
为什么不使用:
@Throws(InterruptedException::class)
fun <T> getValue(liveData: LiveData<T>): T {
var data: T? = null
val latch = CountDownLatch(1)
val observer = object : Observer<T> {
override fun onChanged(o: T?) {
data = o
latch.countDown()
liveData.removeObserver(this)
}
}
liveData.observeForever(observer)
latch.await(2, TimeUnit.SECONDS)
return data!!
}
使用数组比使用可选对象更好吗?为什么? 还是一样?
谢谢
【问题讨论】:
标签: android kotlin android-architecture-components