Kotlin 使用Lambda来设置回调的操作
作者:Heiko-Android 时间:2021-07-22 03:08:04
使用Kotlin的Lambda表达式,我们可以抛弃回调接口的使用。只需设置希望后面会被调用的函数即可。
示例如下
新建一个Kotlin类
class MyBean {
fun testcallback1(callback: (String) -> Unit) {
callback.invoke("这是回调的内容")
}
fun testcallback2(value1: Int, value2: Int, callback: (Int, Int) -> Int): Int {
var result = callback.invoke(value1, value2)
return result * 3
}
}
进行调用
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var bean = MyBean()
bean.testcallback1 { m -> toast(m) }
val result = bean.testcallback2(1, 2, { value1, value2 -> value1 + value2 })
toast("计算结果" + result.toString())
}
}
最后显示的结果
testcallback1的toast显示为: "这是回调的内容"
testcallback2将value1和value2相加,最后再乘以3,故toast显示为9
补充知识:kotlin 定义接口并实现回调
开发环境 android studio 3.0.1 已支持 kotlin
1、定义接口
interface CallBack{
fun callBack(info : String)
}
2、实现接口 : 为继承\实现
class CallBacks : CallBack{
override fun callBack(info : String){
Log.d("MainApp","current info $info")
}
}
或者
private var mCallBack = object : CallBack{
override fun callBack(info : String){
Log.d("MainApp","current info $info")
}
}
3、定义带回调方法的函数
private fun initData(callBack : CallBack):Boolean{
callBack?.callBack("我来自回调")
return true
}
4、实现回调,调用方式与实现接口对应
initData(CallBacks())
或者
initData(mCallBack)
打印结果:
来源:https://blog.csdn.net/EthanCo/article/details/54971645
标签:Kotlin,Lambda,回调
0
投稿
猜你喜欢
android跑马灯出现重复跳动以及不滚动问题的解决方法
2023-07-24 00:33:48
winform用datagridview制作课程表实例
2023-11-24 06:08:28
关于java关键字this和super的区别和理解
2022-08-01 14:33:09
Android自定义attr的各种坑
2023-07-12 06:11:50
详解升级Android Studio3.0时遇到的几个问题
2021-11-19 08:13:52
mybatisplus逻辑删除基本实现和坑点解决
2021-05-24 11:35:50
DirectInfo.GetFiles返回数组的默认排序示例
2022-11-15 14:45:02
Java创建多线程的两种方式对比
2023-09-14 21:02:49
mybatis 字段名自动转小写的实现
2021-09-09 20:04:26
Spring Boot实现异步请求(Servlet 3.0)
2023-11-27 06:26:47
JVM内存管理之JAVA语言的内存管理详解
2021-11-01 12:00:10
基于SSM实现学生管理系统
2023-11-24 18:17:39
在Eclipse安装Spring boot插件的步骤(图文)
2023-01-14 05:04:05
Activiti流程图查看实例
2022-09-10 17:51:44
Spring Boot 2.5.0 重新设计的spring.sql.init 配置有啥用
2021-12-04 00:04:43
Java 如何实现时间控制
2023-02-20 06:19:23
java向多线程中传递参数的三种方法详细介绍
2023-07-11 21:52:55
Java注解Annotation原理及自定义注解代码实例
2023-04-30 10:18:09
C#利用正则判断输入是否为纯数字、容器类
2022-10-10 03:00:39
springmvc如何使用map接收参数
2023-11-28 04:49:17