假设有2个类:
class MyLiveData:LiveData<Int>()
class MyMutableLiveData:MutableLiveData<Int>()
允许从MutableLiveDatato转换: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因为视图会调用它。恕我直言,继承是自然的解决方案。