Android 为什么我会得到;“无用的铸造”;将MutableLiveData强制转换为LiveData时?
我有一系列反馈渠道,因为(在问题范围之外)在我的Android 为什么我会得到;“无用的铸造”;将MutableLiveData强制转换为LiveData时?,android,android-studio,kotlin,android-livedata,Android,Android Studio,Kotlin,Android Livedata,我有一系列反馈渠道,因为(在问题范围之外)在我的ViewModel中 现在,我不想将我的MutableLiveData暴露在我的Viewmodel之外 所以,我制作了一个LiveData对象的私有列表,但编译器抱怨“无用的强制转换” private val_feedbackChannels=Array(10){MutableLiveData()} val反馈通道 get()=\u feedbackChannels.map{ @Suppress(“untible_CAST”)//它不再是无用的,因
ViewModel
中
现在,我不想将我的MutableLiveData
暴露在我的Viewmodel
之外
所以,我制作了一个LiveData
对象的私有列表,但编译器抱怨“无用的强制转换”
private val_feedbackChannels=Array(10){MutableLiveData()}
val反馈通道
get()=\u feedbackChannels.map{
@Suppress(“untible_CAST”)//它不再是无用的,因为它不再公开mutableLiveData
它可以作为LiveData使用
}
为什么我会得到
无用的\u CAST
警告?编译器并没有意识到您这样做只是为了强制属性类型的含义
只需显式指定类型,就可以完全删除强制转换。您甚至不必使用map,一个简单的toList()
就可以:
private val _feedbackChannels = Array(10) { MutableLiveData<FeedbackEvent>() }
val feedbackChannels : List<LiveData<FeedbackEvent>>
get() = _feedbackChannels.toList()
private val_feedbackChannels=Array(10){MutableLiveData()}
val反馈通道:列表
get()=\u feedbackChannels.toList()
编译器并没有意识到您这样做只是为了强制属性类型的含义
只需显式指定类型,就可以完全删除强制转换。您甚至不必使用map,一个简单的toList()
就可以:
private val _feedbackChannels = Array(10) { MutableLiveData<FeedbackEvent>() }
val feedbackChannels : List<LiveData<FeedbackEvent>>
get() = _feedbackChannels.toList()
private val_feedbackChannels=Array(10){MutableLiveData()}
val反馈通道:列表
get()=\u feedbackChannels.toList()
显然,编译器不理解强制转换的要点。为了以更明确的方式执行此操作并删除代价高昂的map
函数,您只需将其上溯如下:
private val _feedbackChannels = Array(10) { MutableLiveData<FeedbackEvent>() }
val feedbackChannels: Array<out LiveData<FeedbackEvent>>
get() = _feedbackChannels
显然,编译器不理解强制转换的要点。为了以更明确的方式执行此操作并删除代价高昂的
map
函数,您只需将其上溯如下:
private val _feedbackChannels = Array(10) { MutableLiveData<FeedbackEvent>() }
val feedbackChannels: Array<out LiveData<FeedbackEvent>>
get() = _feedbackChannels
谢谢,将另一个标记为正确,因为这仍然公开(可变)数组,但它确实回答了我的问题:)更新了我的答案,只是为了澄清接受答案的替代方案!谢谢,将另一个标记为正确,因为这仍然公开(可变)数组,但它确实回答了我的问题:)更新了我的答案,只是为了澄清接受答案的替代方案!