Kotlin:覆写二传手

Tho*_*mmy 4 setter kotlin

我有一个包含以下属性的抽象类

var items: List<I> = listOf()
    set(value) {
        field = value
        onDataChanged()
    }
Run Code Online (Sandbox Code Playgroud)

在我的扩展类中,我现在想在items调用上述setter代码之前重写setter 来做其他事情。如果可能,这可能吗?

crg*_*dos 7

您必须open在父类中声明您的字段

open var items: List<I> = listOf()
    set(value) {
        field = value
        onDataChanged()
    }
Run Code Online (Sandbox Code Playgroud)

在子类中,您将其重写为:

override var items: List<Int>
    get() = super.items
    set(value) {
        super.items = value
        //Your code
    }
Run Code Online (Sandbox Code Playgroud)

这样,您实际上是在创建没有后备字段的属性,而只是访问真正的父级items字段。