Kotlin使用技巧(1)-->标准函数和静态方法

作者: 大漠孤烟直_v | 来源:发表于2020-05-04 22:10 被阅读0次

    一、标准函数with、run、apply

    标准函数是指在Standard.kt文件中定义的函数,任何的Kotlin代码都可以自由的调用。
    我们之前在[Kotlin基础(8)-->空指针检查(https://www.jianshu.com/p/3c1b53b239bf)已经学习了let标准函数,主要作用就是配合?.操作符来进行辅助判空处理,这里就不再赘述了。

    1.with函数

    定义:with函数接收两个参数,第一个可以是任意类型的对象,第二个是lambda表达式。with函数会在lambda表达式中提供第一个参数的上下文,并使用lambda表达式中的最后一行代码最为返回值返回
    作用:可以在连续调用同一个对象的多个方法时让代码变得更加精简
    例子
    原始代码:

    val list = listOf("Apple", "banana", "orange")
    var builder = StringBuilder()
    builder.append("start eat \n")
    for (i in list) {
        builder.append("$i,\n")
    }
    builder.append("finish")
    val result = builder.toString()
    print(result)
    

    使用with函数

    val list = listOf("Apple", "banana", "orange")
    val result= with(StringBuilder()){
        append("start eat \n")
        for (i in list) {
            append("$i,\n")
        }
        append("finish")
        toString()
    }
    print(result)
    
    2.run函数

    run函数使用场景和with十分相似。
    区别是:(1)run函数是不能直接调用的,一定要调用某个对象的run函数才行。(2)run函数只接受一个lambda参数。
    例子:

    val result = StringBuilder().run {
        append("start eat \n")
        for (i in list) {
            append("$i,\n")
        }
        append("finish")
        toString()
    }
    print(result)
    
    3.apply函数

    apply函数用法和run十分相似。
    区别是:apply函数无法返回指定返回值,而是会自动返回调用对象本身
    例子:

    val list = listOf("Apple", "banana", "orange")
    val result = StringBuilder().apply {
        append("start eat \n")
        for (i in list) {
            append("$i,\n")
        }
        append("finish")
    }
    print(result.toString())
    

    二、定义静态方法

    静态方法又叫做类方法,指的是那种不需要创建实例就可以调用的方法。
    Java中,只要在方法前声明static关键字就是静态方法。
    Kotlin中并没有直接定义的静态方法的关键字,但是提供了一些语法特性来支持类似于静态方法调用的写法,基本可以满足我们平时的需求了。

    1.companion object

    这个关键字实际上会在Util类的内部创建一个伴生类,而action2()方法就是定义在这个伴生类的实例方法。
    Kotlin会保证Util类始终只会存在一个伴生类对象。调用Util.action2()方法实际上是调用了Util半身类对象的action2()方法。

    class Util {
        fun action1() {}
    
        companion object {
            fun action2() {}
        }
    }
    

    调用

    fun test() {
            Util.action2()
        }
    
    2.定义静态方法

    Kotlin提供了两种实现方式,注解和顶层方法

    1.@JvmStatic注解

    @JvmStatic注解只能加在单例类或者companion object中的方法上,如果加在一个普通方法上,会提示语法错误。例:

    companion object {
            @JvmStatic
            fun action2() {}
        }
    

    如此,Kotlin编译器就会将这些方法编译成真正的静态方法。

    2.顶层方法

    顶层方法指的是那些没有定义在任何类中的方法。
    Kotlin编译器会将所有的顶层方法全部编译为静态方法。

    定义一个顶层方法,就是创建一个Kotlin文件,类型选择File。命名。
    比如现在定义了一个文件名为Helper.kt,里面有doSomeThing()方法。Kotlin编译器还会自动创建一个叫HelperKt的Java类。

    如何调用顶层方法呢?
    在Kotlin中:直接调用doSomeThing()方法。
    在Java中:HelperKt.doSomeThing()

    相关文章

      网友评论

        本文标题:Kotlin使用技巧(1)-->标准函数和静态方法

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