kotlin(Java函数式API的使用)
Java函数式API的使用
1 | public interface OnClickListener{ |
这种接口被称为函数式接口,或者 SAM 接口, SAM 代表单抽象方法。
使用函数式接口的前体
这里的前提是,使用kotlin去调用java方法,而且java方法是个单抽象接口方法,就可以直接使用函数式API。
已知在kotlin中,有很多简单快捷的函数式API操作。例如:
1 | val list = listOf("Apple","Banana","Orange","Grape","Watermelon") |
而这个的前提就是kotlin中可以将函数作为一个参数传递出去。同样也可以使用lambda来简写函数式。
我们在这里说的是,如果JAVA是一个单抽象接口方法,我们在kotlin中调用该方法时,也可以很简单的去编写,例如下面
1 | //这是一个Android中常用的点击事件窗口。 |
可能你会疑惑,既然使用了kotin那么调用java应该不常用吧,但实际并不是这样,kotlin的核心之一就是与java的互操性,它可以在几乎所有地方,平等的替代java,因此也可以使用java巨大的生态库,这样使用java的函数式API的机会就会有很多。
!!!只有在kotlin调用java时才可以使用
详解函数式接口在kotlin中的使用
在java中的期望函数式接口的方法可以接受一个lambda函数作为实参。
同样能达到该效果的还可以用object显示继承该接口,并重写他的方法。
但是如果用object显示创建的话,他会每一次都创建一个使用新实例对象。而如果使用lambda的话,如果该lambda函数没有访问任何定义他的函数的局部变量,也就是没有访问外部变量,那么这个lambda函数就是可以在多次调用中重用的。
如果他访问了外部变量,那么每次也会去创建一个新实例作为参数传递进去。
使用lambda函数是因为他在底层为你完善了这个SAM实例。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小贺同学的blog!
评论