【发布时间】:2018-08-07 17:06:11
【问题描述】:
我有一个包含以下属性的抽象类
var items: List<I> = listOf()
set(value) {
field = value
onDataChanged()
}
在我的扩展类中,我现在想要覆盖 items 的设置器,以便在调用上述设置器代码之前执行其他操作。这可能吗,如果可以,怎么做?
【问题讨论】:
我有一个包含以下属性的抽象类
var items: List<I> = listOf()
set(value) {
field = value
onDataChanged()
}
在我的扩展类中,我现在想要覆盖 items 的设置器,以便在调用上述设置器代码之前执行其他操作。这可能吗,如果可以,怎么做?
【问题讨论】:
你必须在你的父类中将你的字段声明为open
open var items: List<I> = listOf()
set(value) {
field = value
onDataChanged()
}
在您的子类中,您将其覆盖为:
override var items: List<Int>
get() = super.items
set(value) {
super.items = value
//Your code
}
通过这种方式,您实际上是在创建一个没有支持字段的属性,并且您只是在访问真正的父级的items 字段。
【讨论】: