美文网首页
10.Kotlin扩展作用域分析与扩展的根本作用解析

10.Kotlin扩展作用域分析与扩展的根本作用解析

作者: leofight | 来源:发表于2017-12-24 16:49 被阅读0次

1.扩展属性

与函数类似,Kotlin支持扩展属性。

  • 示例代码
class MyExtensionProperty

val MyExtensionProperty.name: String
    get() = "hello"


fun main(args: Array<String>) {
    var myExtensionProerty = MyExtensionProperty();
    println(myExtensionProerty.name)
}
  • 运行结果
hello

2.伴生对象扩展

  • 示例代码

class CompanionObjectExtension {
    companion object MyObject {

    }
}

fun CompanionObjectExtension.MyObject.method() {
    println("hello world")
}

fun main(args: Array<String>) {
    CompanionObjectExtension.method()
}
  • 运行结果
hello world

3.扩展的作用域

扩展的作用域
①扩展函数所定义的类实例叫做分发接收者(dispatch receiver)
②扩展函数所扩展的那个类的实例叫做扩展接收者(extension receiver)
③当以上两个名字出现冲突时,扩展接收者的优先级最高。

  • 示例代码
class DD {
    fun method() {
        println("DD method")
    }
}

class EE {
    fun method2() {

    }

    //对DD扩展
    fun DD.hello() {
        method()
        method2()
    }

    fun world(dd: DD) {
        dd.hello()
    }

    fun DD.output() {
        println(toString())
        println(this@EE.toString())
    }

    fun test() {
        var dd = DD()
        dd.output()
    }
}

fun main(args: Array<String>) {
    EE().test()


}
  • 运行结果
com.leofight.kotlin.DD@7440e464
com.leofight.kotlin.EE@49476842

扩展可以很好地解决Java中充斥的各种辅助类问题
Collections.swap(list,4,10)
list.swap(4,10) //这样语义更明确,可使用kotlin扩展
Collection.binarySearch()
list.binarySearch(...)//这样语义更明确,可使用kotlin扩展

相关文章

  • 10.Kotlin扩展作用域分析与扩展的根本作用解析

    1.扩展属性 与函数类似,Kotlin支持扩展属性。 示例代码 运行结果 2.伴生对象扩展 示例代码 运行结果 3...

  • 从Java到Kotlin(六)

    扩展与委托 目录 1.扩展 1.1 扩展函数 1.2 扩展属性 1.3 扩展伴生对象 1.4 扩展的作用域 2.委...

  • Kotlin的基本语法六

    1.内联扩展函数之let let扩展函数的实际上是一个作用域函数,当你需要去定义一个变量在一个特定的作用域范围内,...

  • 类的扩展

    同名方法扩展是无效的, 方法重载是可以的 扩展的作用域1.扩展函数所定义在的类实例叫做分发接收者(dispatch...

  • ES6笔记-let

    扩展作用域 读书地址:http://es6.ruanyifeng.com/#docs/let 传统JavaScri...

  • with语句

    先说结论 with语句作用: 扩展一个语句的作用域链。ES5严格模式中禁止使用with语句优点:性能: with作...

  • Kotlin let,run,with,also,apply 函

    let 是扩展函数; 作为扩展函数,把自己作为参数传递进去,(T); 可以在作用域范围内使用it作为引用; 返回不...

  • kotlin开发者大会部分总结

    一.kotlin代码简化 中缀表达式 作用域函数 注意各自使用场景,不要嵌套 扩展函数比如px2dp 比如扩展po...

  • JS基础:作用域

    一、作用域概念-预解析规则、表达式 作用域: 域:空间,范围,区域……作用:读,写 浏览器——JS解析器: 在浏览...

  • ES6 3.函数扩展(包括箭头函数,this指向)

    函数扩展 参数默认值 输出结果:默认值: hello world     默认值: hello kity 作用域 ...

网友评论

      本文标题:10.Kotlin扩展作用域分析与扩展的根本作用解析

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