kotlin 的lambda闭包

lambda闭包会被编译成 Java中的匿名内部类。定义方法是

val lambda_name = {para1, para2 ->
  ....
  ....  
}

根据参数数量不同,实现的接口也会不一样:

 

 一个参数的话,实现的时候就会实现Function1这个接口。其他类推。

 

 

例如:kotlin代码:

Test.kt
val compareTwoNum = {num1:Int, num2:Int->
    if (num1<=num2) print("littlequal")
    else print("big")
}

fun main() {
    compareTwoNum(5,6)
}

 

反编译成java代码:

public final class TestKt {
   @NotNull
   private static final Function2 compareTwoNum;//在内部以一个成员变量来表示

   @NotNull
   public static final Function2 getCompareTwoNum() {
      return compareTwoNum;
   }

   public static final void main() {
      compareTwoNum.invoke(5, 6);
   }

   // $FF: synthetic method
   public static void main(String[] var0) {
      main();
   }

   static {
      compareTwoNum = (Function2)null.INSTANCE;//
   }
}

 

posted @ 2021-08-30 14:23  ou尼酱~~~  阅读(157)  评论(0)    收藏  举报