Kotlin的扩展函数

Kotlin这个名称对android开发人员来说应该不陌生了吧!没错一种全新的语言,它能够跟Java百分之百的无缝对接,编写的出来的代码更加简单,响应速度更加快。

  1. 我们在项目开发过程中经常要写很多工具类,例如:Utils、LogUtil等。在项目运用中我们都需要LogUtil.e这样去调用已经封装过的log代码。kotlin的出现简化了.e的调用。在代码中直接使用封装过的函数e,不在需要将起写为静态函数。


    Kotlin的扩展函数_第1张图片
    1509437564(1).jpg

    没错你没有看错,代码就只需要那么简单,不在需要编写class LogUtil{}这样的结构。
    val不同于var的地方是val可以看作是我们java中的final类型,是一个不可以改变的常量。var是可变的。
    fun 是定义函数的
    fun v(msg:String?) = Log.e(TAGs,msg)这种编写的模式是 Lambda。不需要{}
    2.我们如何在kotlin代码中使用扩展函数,其实很简单,我们只需要引入对应的包就可以直接使用具体的函数,例如:

引用
import com.messcat.kotlin.utils.e

在代码中调用
 e("Kotlin扩展函数")

输出的结果:Kotlin扩展函数

大大的简化了代码量,让代码更加简洁。扩展函数可以替换以前的工具类,这就是kotlin的强大之处,相信kotlin会越来越多的被用到项目中。

  1. 在这里有人会问,如果将工具类封装成一个library,在kotlin中可以正常使用,在java中用不了。是的,确实如此。但是kotlin已经帮我们考虑好了,kotlin中可以使用java,同样在java中也可以使用kotlin。
    在java中使用kotlin的扩展函数,多写下面代码到package上面。
@file:JvmName("LogUtil")
@file:JvmMultifileClass

JvmName:注解可以修改成java类的类名
JvmMultifileClass:如果多个文件中生成了相同的 Java 类名(包名相同并且类名相同或者有相同的 @JvmName 注解)通常是错误的。然而,编译器能够生成一个单一的 Java 外观类,它具有指定的名称且包含来自所有文件中具有该名称的所有声明。
使用起来跟以前调用工具类一样的方法,例如:

引用
import com.messcat.kotlin.utils.LogUtil;

调用
LogUtil.e("Kotlin扩展函数");

输出的结果:Kotlin扩展函数

其实上面的代码对比起来没能充分的体现出Kotlin代码比java的简洁,kotlin在每一个环节都去掉了一些不必要的代码,例如 实体类 java定义实体类需要生成get和set方法,kotlin的data默认的封装了get和set方法不需要自己手动去生成,大大节省了代码量。下篇文我们继续介绍kotlin的data。今天就到这里了,我们下次再见。

你可能感兴趣的:(Kotlin的扩展函数)