假设有2个类:
class MyLiveData:LiveData<Int>()
class MyMutableLiveData:MutableLiveData<Int>()
允许从MutableLiveData
to转换:LiveData
val ld1=MutableLiveData<Int>()
val ld2:LiveData<Int> = ld1 //ok
但是您不能以这种方式转换自己的实现:
val mutable=MyMutableLiveData()
val immutable:MyLiveData = mutable //type missmatch
我知道 MutableLiveData 扩展了 LiveData 这就是为什么它们是可转换的。但我不能MyMutableLiveData
扩展MyLiveData
,因为在这种情况下它不会是可变的
有什么解决方法吗?
UPD:我想我需要展示扩展的动机。我LiveData
正在尝试实现MutableLiveDataCollection
它不仅通知值更改,setValue/postValue
还通知值修改,例如添加新元素。我很惊讶没有本机解决方案。
无论如何,要观察modify
事件,必须有额外的观察方法。并且此方法必须在不可变部分中,LiveDataCollection
因为视图会调用它。恕我直言,继承是自然的解决方案。