一、前言
在 给 Android 开发者的 Kotlin 教程(二)中我们讲了 Kotlin 的必备基础,分别是 Kotlin 中的基本数据类型、数组以及集合这三大知识点。
这一节我们来讲一下 Kotlin 中的方法和 Lambda 表达式这两个知识点。
二、Kotlin 方法
在 Java 中对象是最重要的,而在 Kotlin 中,方法才是最重要的,Kotlin 中方法是可以直接定义在文件里面的,不需要一定定义在类里面。
2.1、方法声明
Kotlin 中一个方法的基本格式如下所示:
具体代码实现
fun plus(a: Int, b: Int): Int {
return a + b
}
2.1.1、类的成员方法
类的成员方法的写法
class Person {
// 成员方法
fun test1() {
println("成员方法")
}
}
成员方法的调用方式
fun main() {
Person().test1()
}
2.1.2、类方法(静态方法)
Kotlin 中并没有 static 关键字,不过我们可以借助companion object(Kotlin 的伴生对象) 来实现类方法的目的。
静态方法的写法
class Person {
companion object {
fun test2() {
println("companion object 实现类方法")
}
}
}
静态方法的调用
Person.test2()
2.1.3、静态类
在 Kotlin 中如果我们想实现一个工具类 util 的话,可以借助 object 来创建一个静态类,静态类中的方法都是静态方法。
静态类的写法
object NumUtil {
fun double(num: Int): Int {
return num * 2
}
}
静态类中方法的调用
println("umUtil.double(2): ${NumUtil.double(2)}")
2.1.4、单表达式方法
当方法返回单个表达式时,可以省略花括号并且在 = 符号之后指定代码体即可。
单表达式方法的写法
fun double(x: Int): Int = x * 2
2.2、方法参数
2.2.1、默认参数
在 Kotlin 中,可以给方法设置一些默认参数,当省略相应的参数时使用默认参数值。与 Java 相比,这可以减少重载数量。
默认参数写法
// off 的默认值就是 0, len 的默认值就是 b.size
fun read(b: Array<Byte>, off: Int = 0, len: Int = b.size) {
}
2.2.2、可变数量的参数
在 Java 中利用 …(比如 String…) 来设置可变类型的参数,在 Kotlin 中是通过 vararg 修饰符标记参数来实现可变参数的。
可变参数写法
// 通过 vararg 修