美文网首页
【Android进阶】kotlin委托属性

【Android进阶】kotlin委托属性

作者: 易含 | 来源:发表于2022-01-18 16:08 被阅读0次
fun main(arg: Array<String>) {
    val myClass1 = myClass1()
    myClass1.name="mycalsss1"

    val myClass2 = myClass2()
    myClass2.name="myclass2"
    println(myClass1.name)
    println(myClass2.name)
}
class myClass1{
    var name:String =""
    get() :String{
        println("mycalsss1.get 被调用")
        return field
    }
    set(value:String) {
        println("myclass1.set 被调用")
        field=value
    }
}
class myClass2{
    var name:String =""
        get() :String{
            println("mycalsss2.get 被调用")
            return field
        }
        set(value:String) {
            println("myclass2.set 被调用")
            field=value
        }
}

输出:

myclass1.set 被调用
myclass2.set 被调用
mycalsss1.get 被调用
mycalsss1
mycalsss2.get 被调用
myclass2

上面代码冗余,所谓委托类,就是一个包含getValue和setValue函数的类,这两个函数operator声明

在使用委托类时,需要by关键字,创建委托类实例的代码放在by后面

如下

import kotlin.reflect.KProperty

fun main(arg: Array<String>) {
    val myClass1 = myClass1()
    myClass1.name = "mycalss1"

    val myClass2 = myClass2()
    myClass2.name = "myclass2"
    println(myClass1.name)
    println(myClass2.name)
}

class delegate {
    var name: String = ""
    operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
        val classname = thisRef.toString().substringBefore("@")
        println("$classname get被调用")
        return name
    }

    operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
        val classname = thisRef.toString().substringBefore("@")
        println("$classname set被调用")
        name = value
    }
}

class myClass1 {
    var name: String by delegate()

}

class myClass2 {

    var name: String by delegate()
}

输出结果和上面一样!

相关文章

  • 【Android进阶】kotlin委托属性

    输出: 上面代码冗余,所谓委托类,就是一个包含getValue和setValue函数的类,这两个函数operato...

  • 【Android进阶】kotlin 委托

    委托模式是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一...

  • 玩转 Kotlin 委托属性

    Kotlin 属性 要讲 Kotlin 的委托属性,要先从 Kotlin 的属性说起,当然关于属性的定义就不多介绍...

  • Kotlin-委托,是否被低估了?

    1、属性委托 kotlin中的委托主要分为类的委托和属性的委托,我们先重点来看属性委托,用的比较多。 标准委托 k...

  • Kotlin委托

    Kotlin委托 1.Kotlin中的委托有两种形式,一种是委托模式,一种是委托属性。 2.委托模式是设计模式中的...

  • 20.Kotlin属性委托

    Kotlin属性委托(delegated property) 示例代码 输出 语法是: val/var <属性名>...

  • Kotlin进阶 - 类

    这篇属于Kotlin进阶,讲了与类相关内容,主要涉及到:类定义、类属性和函数、类继承、抽象类和接口、委托与代理、单...

  • Kotlin-map属性委托

    Kotlin-map属性委托 委托属性在实际开发中是有如下4种使用情况的 1、延迟属性。 2、可观测属性。 3、非...

  • Kotlin Weekly 中文周报 —— 14

    Kotlin 开发中文周报 文章 对比 Java,Kotlin 中我最喜欢的功能 Kotlin 自定义委托属性(C...

  • Kotlin-可观测属性委托(Observable)-Deleg

    Kotlin-可观测属性委托(Observable)-Delegates.observable Delegates...

网友评论

      本文标题:【Android进阶】kotlin委托属性

      本文链接:https://www.haomeiwen.com/subject/wibkhrtx.html