我有一个抽象的ViewModel类,我们称之为AbstractListViewModel。
它具有一个类型为MutableLiveData 的itemsList。 JSONObject有2个子级:JSONChildOne和JSONChildTwo。我想重写AbstractViewModel子级中的属性以键入MutableLiveData
>。
我试图在子类中重写MutableLiveData >
AbstractListViewModel:
abstract val itemsList : MutableLiveData<List<JSONObject>>
ChildOneListViewModel:
override val itemsList = MutableLiveData<List<JSONChildOne>>()
属性类型为“ MutableLiveData <列表
答案 0 :(得分:0)
您不能这样做,List<Child>
不会扩展List<Parent>
(有关原因的讨论,请参见here)。
您应该在AbstractViewModel
中使用通用参数,例如:
abstract class AbstractViewModel<T: JSONObject> {
abstract val itemsList : MutableLiveData<List<T>>
}
class ChildOneListViewModel : AbstractViewModel<JSONChildOne> {
override val itemsList : MutableLiveData<List<JSONChildOne>>
}