天天看点

类、接口、函数

前言

各种专业技术名词不断增加,学好编程首先要了解技术术语,然后才可以对技术行业整体有一个大概判断。学习中对某个知识点经常使用但是看官方文档时还是很容易混淆,专业术语与自己已经掌握的知识对应关系。blog在于罗列 java 和 kotlin ,类、接口、函数 种类。

类、接口、函数
类、接口、函数

函数

Lambda 是一个对象。

Lambda 表达式是一个函数接口对象

lambda表达式 :block:String.()->Unit

kotlin inline 关键字

每次调用高阶函数,会创建一个匿名内部类。 函数设置成Inline之后。函数的表达式会在编译时候内嵌到被调用的地方,达到性能优化效果。减少类加载时机。

inline 关键字 函数与普通函数对比字节码后发现:

  1. 使用inline后 字节码行数减少相对于非 inline 函数所在字节码的类
  2. 使用inline 字节码中不会出现 kotlin/jvm/lambda 类的继承,而普通函数会有继承 kotlin/jvm/lambda 。

Intelj IDE 查看字节码(java 和 kotlin 方式)

类、接口、函数

kotlin 查看字节码

类、接口、函数

Kotlin 函数类型 :函数类型都有一对括号,并有返回值

表达式 (Int)->Unit

函数式(SAM)接口

只有一个抽象方法的接口称为函数式接口或 SAM(单一抽象方法)接口。函数式接口可以有多个非抽象成员,但只能有一个抽象成员。

声明:

fun interface KRunnable {
   fun invoke()
}      

函数式接口转换: ​​Lambda 转化 SAM​​

问题 :

1.​​什么是字节码​​​