覆盖默认构造函数中定义的变量的setter

Ada*_*331 3 kotlin kotlin-interop

所以我有一个看起来像这样的Kotlin类:

class MyClass {
    var myString: String = ""
        set(value) {
            field = value
            doSomethingINeed()
        }

    constructor(myString: String) {
        this.myString = myString
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,Android Studio警告我可以将其用作默认构造函数.当我选择它时,它会将其更改为:

class MyClass(var myString: String)
Run Code Online (Sandbox Code Playgroud)

现在我失去了覆盖setter的机会,因为如果我创建一个名为setMyString()I 的方法,我将收到编译器错误.

如果字段是默认构造函数的一部分,有没有办法覆盖setter,或者我是否必须使用选项1并忽略我得到的警告?

zie*_*ikk 8

它的快速修复肯定搞砸了,但评论试图指出你正确的方向.您希望定义仅接受参数(不定义属性)的主构造函数,然后将该参数用于属性初始化.像这样的东西:

class MyClass(myString: String) {
    var myString: String = myString
        set(value) {
            field = value
            doSomethingINeed()
        }
}
Run Code Online (Sandbox Code Playgroud)