【问题标题】:Kotlin: Override setterKotlin:覆盖设置器
【发布时间】:2018-08-07 17:06:11
【问题描述】:

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

var items: List<I> = listOf()
    set(value) {
        field = value
        onDataChanged()
    }

在我的扩展类中,我现在想要覆盖 items 的设置器,以便在调用上述设置器代码之前执行其他操作。这可能吗,如果可以,怎么做?

【问题讨论】:

    标签: kotlin setter


    【解决方案1】:

    你必须在你的父类中将你的字段声明为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 字段。


    【讨论】:

      猜你喜欢
      • 2019-10-31
      • 2013-07-26
      • 2011-12-17
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多