问题描述
我正在使用 2020 年的一本书中的 Kotlin 学习 android studio 4.1。在其中一个示例中,他们使用的是 mutablelivedata 对象。当我尝试在这一行中使用代码完成时:
result.setValue(value.toFloat()*usd_to_eu_rate)
唯一的选择是二传手 result.value
强硬 result.setValue
确实工作得很好。所以我想知道两者之间有什么区别以及为什么 value
没有出现在代码完成中。
解决方法
感谢此链接 - kotlinlang.org/docs/reference/java-interop.html#getters-and-setters - 由@IR42 提供以及其他贡献者提供的其他信息,他们的评论不幸被删除,我找到了答案:
MutableLiveData 是一个 Java 类,当 Java 类具有遵循 Java 约定的 getter 和 setter 方法(名称以 get 和单参数开头的无参数方法)时,Kotlin 将推断一个属性名称以 set) 开头的方法
代码完成不会建议使用 Java getter 方法(即 getValue 和 setValue),但会建议使用 Kotlin 推断属性(即 价值)
您仍然可以使用 Java getter/setter 方法,但不鼓励这样做。