kotlin调用Java的时候可以用函数式API,但是有一定的限制。如果Kotlin调用java方法,并且该方法接收一个Java单抽象方法接口参数,就可以使用函数式API,Java单抽象方法是接口只有一个待实现方法,如果多个待实现方法,则无法使用
java中最常见的单抽象方法接口——Runnable接口,这个接口只有一个待实现方法run()
我们常见的类Thread类接收Runnable参数。
new Thread(new Runnable(){
@Override
public void run() {
}
}).start();
这是java代码创建并执行的一个子线程,使用的是匿名内部类的写法,我们创建一个Runnable接口的匿名类实例,并把它传给Thread类的构造方法,最后调用start
()方法执行
kotlin的版本,写法如下:
Thread(object :Runnable{
override fun run() {
TODO("Not yet implemented")
}
}).start()
如果java方法中的参数列表中有且仅有一个Java单抽象方法接口参数,这样接口名就可以省略,代码更加精简
Thread(Runnable{
println("do thread")
}).start()
网友评论