【问题标题】:What is the use of "this.toString()" in get()?get() 中的“this.toString()”有什么用?
【发布时间】:2020-08-27 07:46:57
【问题描述】:

我在kotlin docs找到了这段代码:

var stringRepresentation: String
get() = this.toString()
set(value) {
    setDataFromString(value) // parses the string and assigns values to other properties
}

我不明白 this.toString() 在这里做什么。 this 指的是整个对象。为什么我们希望每次访问对象时都将其转换为字符串?它实际上应该是field.toString() 吗? (但这也是多余的)

【问题讨论】:

  • Kotlin 文档在哪里?
  • 可能是因为 set 没有为字段设置值,所以该字段为空。它应该用于对象的 toString() 调用,因为foo.stringRepresentation 看起来更像我们想要 foo 对象的字符串表示形式。
  • @mattfreake 我已经用链接更新了问题。有问题的代码位于“Getters and Setters”部分下。
  • 谢谢,链接中的文档与 Tenfour04 下面所说的相符

标签: kotlin tostring getter-setter getter


【解决方案1】:

它可能来自一个虚构的类,该类可以通过将其属性值复制到 JSON 或其他一些序列化的字符串格式来将自己序列化为字符串。如果这些属性是可变的,您会希望它在每次获取值时生成一个新字符串。由于它有一个 setter,这个虚构类的 setDataFromString 函数可能采用 JSON 或某种字符串表示形式并将其反序列化为自己的属性。

只有在访问stringRepresentation 时才会调用getter。

setter 没有使用支持字段,因此 getter 没有理由使用支持字段值。

【讨论】:

    猜你喜欢
    • 2016-05-02
    • 1970-01-01
    • 2023-03-12
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多