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 提供以及其他评论被不幸删除的贡献者的其他信息,我找到了我的答案:
MutableLiveData 是一个 Java class 并且当 Java class 具有遵循 Java 的方法时,Kotlin 将推断出一个 属性 getters 和 setter 的约定(名称以 get 开头的无参数方法和名称以 set 开头的单参数方法)
代码补全将不会建议Javagetter方法(即getValue和setValue) 但它会建议 Kotlin 推断 属性 (即 value)
您仍然可以使用 Java getter/setter 方法,但不鼓励这样做。
我正在使用 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 提供以及其他评论被不幸删除的贡献者的其他信息,我找到了我的答案:
MutableLiveData 是一个 Java class 并且当 Java class 具有遵循 Java 的方法时,Kotlin 将推断出一个 属性 getters 和 setter 的约定(名称以 get 开头的无参数方法和名称以 set 开头的单参数方法)
代码补全将不会建议Javagetter方法(即getValue和setValue) 但它会建议 Kotlin 推断 属性 (即 value)
您仍然可以使用 Java getter/setter 方法,但不鼓励这样做。