AI智能
改变未来

【Android开发日志】Kotlin Lambda编程入门 – Java函数式API(18)


既然我们都学Kotlin了,为什么还有学Java?

Android SDK仍然是用Java编写,很多时候调用SDK接口仍然需要一些Java知识。

如果我们在Kotlin代码中调用一个Java方法,并且此方法接收一个

Java单抽象方法接口函数

,就可以使用

函数式API

  • Java单抽象方法接口函数

    :指接口中只有一个待实现方法,若有多个待实现方法,则无法使用函数式API

可能不太好理解,我们使用一个Java原生API中的

单抽象方法接口

——

Runnable接口

。而接口里只有一个

run()

方法。函数的定义如下:

public interface Runnable{void run();}

对于任何一个

Java方法

,只要它接收

Runnable函数

,就可以使用

函数式API

那么什么Java方法接收了Runnable函数?当然有很多。更多时候Runnable函数接口结合线程一起使用。

fun main(){Thread(object:Runnable{override fun run(){println(\"线程已开始运行。\")}}).start()}

代码中使用

object

创建了一个匿名类实例。

目前我们写的

Thread类

是符合

Java函数式API

使用条件的。下面我们对代码进行简化:

Thread(Runnable{println(\"线程已开始运行。\")}).start()
  • Runnable类中只有一个代实现的方法,也没有显式地重写
    run()

    方法,Kotlin也会明白

    Runnable

    后的Lambda表达式就是

    run()

    方法中实现的内容。

当然,如果一个Java方法的参数列表只有一个单抽象方法接口参数时,我们的接口名字都可省略:

Thread {println(\"线程已开始运行。\")}.start()

实例:
Android里有一个常用的点击事件接口

OnClickListener

,用于监听点击,并作出响应。

Public interface OnClickListener {void onClick(View v);}

假设我们已有一个按钮botton,我们去注册这个按钮的点击事件。

botton.setOnClickLister{}

当然Kotlin的高阶函数很强大,不需要像Java这样来实现,这里的方法只用于单抽象方法接口。

欢迎关注小试编程
​​​​

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 【Android开发日志】Kotlin Lambda编程入门 – Java函数式API(18)