【问题标题】:Difference between 'setValue' and 'value' in Kotlin 4.1 MutableLiveData?Kotlin 4.1 MutableLiveData中'setValue'和'value'之间的区别?
【发布时间】:2021-04-29 22:05:26
【问题描述】:

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

【问题讨论】:

  • 我尝试点击此链接但收到 404
  • 当我查看“.value”的用法时,它会显示为“.getValue”。另外,我在“LiveData”和“MutableLiveData”中都没有看到“.value”的定义??? Kotlin 是否生成“.value”?
  • 这个链接有效吗? kotlinlang.org/docs/reference/…
  • @IR42 是的,它有效,谢谢!正是我想要的

标签: android-studio kotlin code-completion mutablelivedata


【解决方案1】:

感谢此链接 - kotlinlang.org/docs/reference/java-interop.html#getters-and-setters - 由 @IR42 提供,以及其他贡献者的其他信息,不幸的是,他们的 cmets 被删除了,我找到了答案:

MutableLiveData 是一个 Java 类,当 Java 类具有遵循 Java 的 getter 和 setter 约定的方法(名称以 get 和单参数开头的无参数方法时,Kotlin 将推断一个属性名称以 set)

开头的方法

代码完成将建议 Java getter 方法(即 getValuesetValue)但它会建议 Kotlin 推断属性(即 价值)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 2023-03-04
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多