Kotlin 标准函数和静态方法
标准函数
Kotlin 的标准函数指的是 Standard.kt
文件中定义的函数,任何 Kotlin 代码都可以自由地调用所有的标准函数
let 函数
let
函数提供了函数式 API 的编程接口,并将原始调用对象作为参数传递到 Lambda 表达式中。
with 函数
with
函数接收两个参数:第一个参数是一个任意类型的的对象,第二个参数是一个 Lambda 表达式。with
函数会在 Lambda 表达式中提供第一个参数对象的上下文,并使用 Lambda 表达式中的最后一行代码作为返回值返回。示例代码如下:
val result = with(obj) { |
with
函数在连续调用同一个对象的多个方法时让代码变得钢架精简,例如:
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape") |
run 函数
run
函数的用法和使用场景与 with
函数类似,只是语法做了改动。run
函数通常不会直接调用,而是要在某个对象的基础上调用,只接受一个 Lambda 函数,并且会在 Lambda 表达式中提供对象的上下文,其他方面与 with
函数一样。示例代码如下:
val result = obj.run { |
可以用 run
函数修改前面的代码:
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape") |
apply 函数
apply
函数和 run
函数极其类似,但是无法指定返回值,而是会自动返回调用对象本身。示例代码如下:
val result = obj.apply { |
静态方法
Kotlin 极度弱化了静态方法这个概念,提供了比静态方法更好用的语法特性 —— 单例类。像工具类这种功能,在 Kotlin 中就非常推荐使用单例类的方式来实现。
让类中的某一个方法变成静态方法的调用方式使用 companion object
:
class Util { |
doAction2 () 方法并不是静态方法,companion object
关键字会在 Util 类的内部创建一个伴生类,而 doAction2 () 方法就是定义在这个伴生类里面的实例方法。Kotlin 会保证 Util 类始终只会存在一个伴生类对象,因此调用 Util.doAction2 () 方法实际上就是调用了 Util 类中伴生对象的 doAction2 () 方法。
@JvmStatic 注解和顶层方法
Kotlin 提供了注解和顶层方法两种实现方式类定义真正的静态方法。
添加
@JvmStatic
注解后 Kotlin 会将方法编译成真正的静态方法,@JvmStatic
注解只能加在单例类或companion object
中的方法上。顶层方法指的是那些没有定义在任何类中的方法。Kotlin 编译器会将所有的顶层方法全部编译成静态方法,在 Kotlin 中调用时直接键入方法名即可,在 Java 中调用需要使用
文件名.方法名
。