二、Kotlin标准函数和静态函数

1、标准函数with、run和apply

let : 函数,配合?.进行辅助判空处理
with :  连续调用同一个对象的多个方法,让代码变得更加简洁
 val list = listOfNotNull("apple","banana","orange","li")
    //正常处理
    val stringBuilder = StringBuilder()
    stringBuilder.append("start eat fruit.\n")
    for (i in list){
        stringBuilder.append(i).append(".\n")
    }
    stringBuilder.append("start eat fruit end.\n")
    val result = stringBuilder.toString()
    println(result)
    println("------------------------with----------------------------")
    //with函数
    val results = with(StringBuilder()){
        append("start eat fruit.\n")
        for (i in list){
            append(i).append(".\n")
        }
        append("start eat fruit end.\n")
        toString()
    }
    println(results)
run : 和with用法场景非常类似
  val result1 = StringBuffer().run {
        append("start eat fruit.\n")
        for (i in list){
            append(i).append(".\n")
        }
        append("start eat fruit end.\n")
        toString()
    }
apply:和run类似,在对象上调用,只能有一个Lambda表达式,也会在Lambda表达式中提供调用对象的上下文,无法指定返回值
    val result2 = StringBuilder().apply {
        append("start eat fruit.\n")
        for (i in list){
            append(i).append(".\n")
        }
        append("start eat fruit end.\n")
    }
    println(result2.toString())
Android中跳转使用
    companion object{
        fun gotoActivity(context: Context , data : String){
            val  intent = Intent(context,SecondActivity :: class.java).apply { 
                putExtra("data1",data)
                putExtra("data2",data)
                putExtra("data3",data)
                putExtra("data4",data)
                putExtra("data5",data)
            }
            context.startActivity(intent)
        }
    }

2、静态方法

静态方法又叫类方法,是那种不用创建实例就能调用的方法,在java中,用static修饰的方法就是静态方法,在Kotlin中,如果是定义工具类,就建议使用单例类来实现相关方法
object Utils {
    fun doAction(){
        println("静态方法")
    }
}
  //调用
   Utils.doAction()
因为使用单例类,会使所有的方法变成静态方法,如果一个类中只需要一个方法变成单例模式,需要在这个方法外面包companion object这个函数,就实现单例类了
    companion object{
        fun doAction(){
            println("静态方法")
        }
    }
companion object这个关键字会在类中内部创建一个伴生类,而doAction就是定义在伴生类里面的实例方法。所以,kotlin中没有直接定义静态方法的关键字,但是提供了一些语法特性来支持类似静态方法的调用的写法

3、静态方法实现

两种方式;注解和顶层方法
1)注解
上述的方法,都无法在java中以静态方法方式调用,如果在 companion object中的静态方法上加上@JvmStatic注解,kotlin编译器就能编译成真正的静态方法
	// @JvmStatic 只能加载单例类和companion object的方法上,如果加在普通方法上,会报错
    companion object{
        @JvmStatic
        fun doAction(){
            println("静态方法")
        }
    }
2)顶层方法
	直接创建File类,在里面定义方法
	New--Kotlin--输入类名--选择File--OK

fun doAction(){
    println("静态方法")
}

fun doAction1(){
    println("静态方法")
}
在Kotlin方法中,直接可以调用,在java中,需要类名.方法调用

你可能感兴趣的:(kotlin)