覆盖默认构造函数中定义的变量的setter
所以我有一个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,而忽略我得到的警告?
快速修复它肯定会把事情搞砸了,但是这个评论正试图指出你正确的方向。 你想要定义一个只接受一个参数(不定义一个属性)的主构造函数,然后使用该参数进行属性初始化。 像这样的东西:
class MyClass(myString: String) { var myString: String = myString set(value) { field = value doSomethingINeed() } }
- Kotlin以Javascript文件编译
- 不兼容的类型:A和kotlin.reflect.KType
- Java 8 stream.collect(Collectors.toMap())类似于kotlin
- 在Kotlin中使用HTTP客户端时如何正确处理错误?
- gradle构建测试时如何执行一些代码
- Kotlin扩展/合成属性:多个调用中的相同对象Fragment.onViewCreated()
- Android OutOfMemoryError:未能分配一个57993496字节分配与16764448空闲字节
- Kotlin:Intrinsics.areEqual无限循环(堆栈溢出)
- Kotlin:以函数的形式传递对象作为参照,并改变它的实例