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

Override setter for variable defined in default constructor

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

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

    constructor(myString: String) {
        this.myString = myString
    }
}

但是,Android Studio 警告我可以将其用作默认构造函数。当我 select 那个时,它会变成这样:

class MyClass(var myString: String)

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

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

它的快速修复确实搞砸了,但评论试图为您指明正确的方向。您想要定义一个仅接受一个参数的主构造函数(不定义 属性),然后将该参数用于 属性 初始化。像这样:

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