【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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小试编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值