Kotlin 4.1 MutableLiveData 中 'setValue' 和 'value' 之间的区别?

Difference between 'setValue' and 'value' in Kotlin 4.1 MutableLiveData?

我正在使用 2020 年一本书中的 Kotlin 学习 android studio 4.1。在其中一个示例中,他们使用了 MutableLiveData 对象。当我尝试对这一行使用代码完成时: result.setValue(value.toFloat()*usd_to_eu_rate) 唯一的选择是 setter result.value tough result.setValue 确实工作得很好。所以我想知道两者之间有什么区别以及为什么 value 没有出现在代码完成中。

多亏了这个 link - kotlinlang.org/docs/reference/java-interop.html#getters-and-setters - 由 @IR42 提供以及其他评论被不幸删除的贡献者的其他信息,我找到了我的答案:

Mu​​tableLiveData 是一个 Java class 并且当 Java class 具有遵循 Java 的方法时,Kotlin 将推断出一个 属性 getters 和 setter 的约定(名称以 get 开头的无参数方法和名称以 set 开头的单参数方法)

代码补全将不会建议Javagetter方法(即getValuesetValue) 但它会建议 Kotlin 推断 属性 (即 value

您仍然可以使用 Java getter/setter 方法,但不鼓励这样做。