属性的setter与
我有一个代码
var exampleData = MutableLiveData<String>()
private set
我想把setter隐藏到MutableLiveData 的值
exampleData.value = "Hi!" // still working
我试过几种方法,但都奏效了!
var exampleData = MutableLiveData<String>()
private set(value) { field = value } // Working!
var exampleData = MutableLiveData<String>()
internal set // Working!
var exampleData = MutableLiveData<String>()
internal set(value) { field = value } // Working!
如何隐藏这个二传手?
MutableLiveData
无关,因为它在对象本身中是可变的。您必须将其强制转换为LiveData
,这可以使用backing属性来完成。
private val _exampleData = MutableLiveData<String>()
val exampleData: LiveData<String> get() = _exampleData
您可以使用_exampleData.value = "value"
私下更改值,并且只公开一个不可变的LiveData
。
从LiveData和MutableLiveData的文档中,您可以在LiveDatasetValue()
&postValue()
方法不是公共的。然而,在MutableLiveData中,它们可以被访问。因此,如果您想使它们不可访问,请将其更改为LiveData
,而不是使用MutableLiveData
。