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

问题描述

我正在使用 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 方法(即 getValuesetValue),但会建议使用 Kotlin 推断属性(即 价值)

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...