如何从 Kotlin 的类内部处理 getter

问题描述

考虑遵循 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