【问题标题】:When to use property delegation and when to use property getter in Kotlin?在 Kotlin 中何时使用属性委托以及何时使用属性 getter?
【发布时间】:2020-11-01 02:07:37
【问题描述】:

随着 Kotlin 1.4 的发布,我们可以将 delegation of properties 设为:

val delegatedProperty: Int by anotherObj::intProperty

但是它们在哪里有用呢?什么时候应该有人在旧式 getter 和 setter 定义上使用它们?

val delegatedProperty: Int get() = anotherObj.intProperty

即使是这种老式的 getter/setter 对性能的影响似乎也比新的(似乎基于反射)要小。

那么,新的属性访问委托在哪个目的上更好,而旧式的属性委托在哪个目的上更好?

【问题讨论】:

    标签: kotlin


    【解决方案1】:

    您可以使用它更简洁地“通过”其他对象的属性。

    class Foo (private val bar: Bar) {
    
        var barName by bar::name
    
    }
    

    class Foo (private val bar: Bar) {
    
        var barName: String 
            get() = bar.name
            set(value) { bar.name = value }
    
    }
    

    【讨论】:

    • 在创建KProperty0(反射对象)的成本中:'(
    猜你喜欢
    • 2017-12-22
    • 2011-06-07
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多