kotlin中的集合

在kotlin中

1
2
3
4
5
6
7
8
fun main(args: Array<String>) {
println(set.javaClass)
println(list.javaClass)
println(map.javaClass)
}
val set = setOf(1,2,3)
val list = arrayListOf(1,2,3,4)
val map = mapOf(1 to 'a',2 to 'b')

他的输出结果为

1
2
3
4
5
class java.util.LinkedHashSet
class java.util.ArrayList
class java.util.LinkedHashMap

Process finished with exit code 0

也就是说明,在kotlin中,他并没有单独的集合类,而是采用了java的集合类。但是他相对于java的集合类又有一些特殊的方法,如last(),max()之类。

函数的相关细节

  1. 显示标明参数
    在kotlin中,kotlin可以直接显式的标明一些参数的名称,而不一定要通过顺序或者查看文档来获取应该如何填写参数。
    不过,如果使用了显示的标明参数,那么他之后的参数也必须都标明。

  2. 默认参数值
    在kotlin中有一个特别好用的技巧就是默认参数值,通过这个默认参数值,可以省略掉很多java中必须重载的方法(这些方法只是因为参数的类型和数量不同)。使用了默认参数值后便不需要使用这些重构。任何你没有填写的参数他都会直接用默认参数来代替。

    考虑到java有与kotlin的互操型,如果java调用kotlin的函数,由于java没有默认参数的说法,所以可以在kotlin的方法上加上注解@JvmOverloads,然后编译器会自动生成所有重载方法,从最后一个省略每个参数

  3. 顶层函数
    在kotlin中,他可以直接有全局的函数和变量,这些函数和变量在经过编译器编译过后,会自动转化成public static的方法和public static final的属性,他所存在的类就是kt的文件名到时候会在编译时转化成类。
    此时这些函数都会转化为静态方法或者静态变量。如果下需要自定义类名,可以在这个文件最顶部加上注解@JvmName("你需要制定的类名“)
    然后在java中调用这些静态方法就可以使用类名.方法的方式来调用了