Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么我会得到;“无用的铸造”;将MutableLiveData强制转换为LiveData时?_Android_Android Studio_Kotlin_Android Livedata - Fatal编程技术网

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

谢谢,将另一个标记为正确,因为这仍然公开(可变)数组,但它确实回答了我的问题:)更新了我的答案,只是为了澄清接受答案的替代方案!谢谢,将另一个标记为正确,因为这仍然公开(可变)数组,但它确实回答了我的问题:)更新了我的答案,只是为了澄清接受答案的替代方案!