【发布时间】:2021-12-28 18:43:36
【问题描述】:
我正在使用可变阴影,我有类似的东西
val selectedEntryIds: LiveData<Set<Long>>
get() = _selectedProductIds
private val _selectedProductIds = MutableLiveData<MutableSet<Long>>(mutableSetOf())
但是我收到一个错误提示类型不匹配。
【问题讨论】:
我正在使用可变阴影,我有类似的东西
val selectedEntryIds: LiveData<Set<Long>>
get() = _selectedProductIds
private val _selectedProductIds = MutableLiveData<MutableSet<Long>>(mutableSetOf())
但是我收到一个错误提示类型不匹配。
【问题讨论】:
像这样使用方差注释out:
val selectedEntryIds: LiveData<out Set<Long>>
get() = _selectedProductIds
告诉编译器 LiveData 只会产生这样一个集合。检查:
https://kotlinlang.org/docs/generics.html#declaration-site-variance
【讨论】:
您可以执行以下操作
val selectedEntryIds: LiveData<Set<Long>>
get() = _selectedProductIds as LiveData<Set<Long>>
private val _selectedProductIds = MutableLiveData<MutableSet<Long>>(mutableSetOf())
将MutableLiveData<..> 转换为常规的LiveData<..> 对象。
【讨论】: