问题描述
考虑遵循 Kotlin 代码:
class Foo(input: Int) {
private var someField: Int = input
get() = -field
set(value) {
field = -value
}
fun bar() {
println(someField)
}
}
fun main() {
Foo(1).bar()
}
这会在控制台中打印 -1
,这意味着内部方法 bar()
someField
引用了属性而不是相应的 getter。有没有一种方法可以让我使用 get()
方法,就好像我是从外部引用这个字段一样?
解决方法
也许您可以将“原始”值与负值分开跟踪?像这样:
class Foo(input: Int) {
private var _someField: Int = input
var someField: Int
get() = -_someField
set(value) {
_someField = -value
}
fun bar() {
println(someField)
}
}
现在类内部可以引用 _someField
来直接处理原始值,而外部客户端只能“看到”someField
。