所以我有一个看起来像这样的Kotlin类:
class MyClass {
var myString: String = ""
set(value) {
field = value
doSomethingINeed()
}
constructor(myString: String) {
this.myString = myString
}
}
但是,Android Studio警告我可以将其用作默认构造函数。当我选择它时,它将其更改为:
class MyClass(var myString: String)
现在我失去了覆盖setter的机会,因为如果我创建一个名为setMyString()
的方法,我将收到编译器错误。
如果字段是默认构造函数的一部分,是否有办法覆盖setter,或者我是否必须使用选项1并忽略我得到的警告?
答案 0 :(得分:8)
快速修复它肯定搞砸了,但评论试图指出你正确的方向。您想要定义仅接受参数(不定义属性)的主构造函数,然后将该参数用于属性初始化。像这样:
class MyClass(myString: String) {
var myString: String = myString
set(value) {
field = value
doSomethingINeed()
}
}