科特林:覆盖 setter
Kotlin: Override setter
我有一个摘要 class 包含以下 属性
var items: List<I> = listOf()
set(value) {
field = value
onDataChanged()
}
在我的扩展 class 中,我现在想覆盖 items
的 setter 以在调用上述 setter 代码之前执行其他操作。这可能吗,如果可以,怎么做?
您必须在 parent class
中将您的字段声明为 open
open var items: List<I> = listOf()
set(value) {
field = value
onDataChanged()
}
并且在您的 child class 中您将其覆盖为:
override var items: List<Int>
get() = super.items
set(value) {
super.items = value
//Your code
}
通过这种方式,您实际上是在创建一个没有支持字段的 属性,而您只是访问真实的 parent 的 items
字段。
我有一个摘要 class 包含以下 属性
var items: List<I> = listOf()
set(value) {
field = value
onDataChanged()
}
在我的扩展 class 中,我现在想覆盖 items
的 setter 以在调用上述 setter 代码之前执行其他操作。这可能吗,如果可以,怎么做?
您必须在 parent class
中将您的字段声明为open
open var items: List<I> = listOf()
set(value) {
field = value
onDataChanged()
}
并且在您的 child class 中您将其覆盖为:
override var items: List<Int>
get() = super.items
set(value) {
super.items = value
//Your code
}
通过这种方式,您实际上是在创建一个没有支持字段的 属性,而您只是访问真实的 parent 的 items
字段。