我发现这段代码在 kotlin文档:
var stringRepresentation: String
get() = this.toString()
set(value) {
setDataFromString(value) // parses the string and assigns values to other properties
}
我不明白 this.toString()
在这里是指。this
指的是整个对象。为什么我们要在每次访问对象时都将其转换为字符串呢?实际上,它应该是 field.toString()
? (但那也是多余的)
它可能来自于一个虚构的类,它可以通过将其属性值复制到JSON或其他序列化的String格式,将自己序列化成一个String。如果这些属性是可突变的,你会希望它在每次获取值时生成一个新的String。而且由于它有一个setter,这个虚构类的 setDataFromString
函数可能需要JSON或某种字符串表示,并将其反序列化为自己的属性。
getter只有在 stringRepresentation
被访问。
设置者没有使用后置字段,所以获取者没有理由使用后置字段的值。