Java 回调 和 kotlin的回调

A类

var onCheckedListener: ((flag: Boolean) -> Unit)? = null

onCheckedListener?.invoke(true、false)


B类 调用 A 中 的结果

A.onCheckedListener.let {

  Log.e("1111111111111", "是否点击${it}")

}
A

lateinit  var onCheckedListener: (flag: Boolean) -> Unit

onCheckedListener(true、false)

B

A.onCheckedListener= {

   Log.e("1111111111111", "是否点击${it}")

}

函数类型

Kotlin中一切皆是对象,函数也不例外。在Kotlin中,函数本身也是对象,可以拥有类型并实例化。Kotlin 使用类似 (Int) -> String 的一系列函数类型来处理函数的声明,比如我们常见的点击回调函数:

 Main.class(A) 调用了 Person.class(B) 中的方法,B回调给A,及B的值返回给A,A就会的得到值

val onClick:(View)->Unit={}

生成Person类及MyInterface 接口

class Person {
    val name:String = "Person"
    lateinit var  mListen:MyInterface
    fun  setListeren(listen:MyInterface){
        this.mListen=listen
        this.mListen?.poo("poo:$name")
    }
    interface  MyInterface{
        fun poo(str:String)
    }


}

fun main(args: Array<String>) {
    println("hellow word")
    var person = Person()
    person.setListeren(object :Person.MyInterface{
        override fun poo(str: String) {
            println(str)
        }
    })
   
}

打印结果

hellow word
invoke:Person

以上是用原java写法来实现kotlin回调的,目的是从java转来的人好理解,看看kotlin是如何简化java代码的

class Person {
    val name:String = "Person"

// 声明mListen是一个函数(单方法接口),入参String,无返回值
    lateinit var mListen:(String) ->Unit
    fun setListeren(listener:(String) ->Unit){
        this.mListen=listener
        this.mListen("invoke:$name")
        //等于 mListen?.invoke("invoke :" +name)  X()等同于X.invoke()
      //  mListen?.invoke("invoke:$name")
    }

}
fun main(args: Array<String>) {
    println("hellow word")
    var person = Person()
    person.setListeren { println(it) }
}

打印结果

hellow word
invoke:Person

MessageListener回调函数是一种在消息通信中使用的回调函数。在消息通信中,通常存在一个消息生产者一个或多个消息消费者。消息生产者负责发送消息,消息消费者负责接收处理消息。 在使用MessageListener回调函数时,消息消费者会注册一个回调函数到消息队列中,以便在有新消息到达时被调用。当有新消息到达时,消息队列会自动调用注册的MessageListener回调函数,并将接收到的消息作为参数传递给该函数。消息消费者可以在回调函数中处理接收到的消息,如进行业务逻辑处理、数据存储等。 使用MessageListener回调函数的优点是能够实现异步的消息处理。通常,在消息消费者接收到消息后,会立即释放控制权,继续执行其他任务,而不用等待消息的处理完成。这样可以提高消息处理的效率系统的响应速度。 另外,MessageListener回调函数还可以实现消息的监听订阅。消息生产者在发送消息时,可以指定多个消息消费者注册相同的回调函数,从而实现消息的广播或者发布-订阅模式。这样可以满足不同场景下的消息通信需求。 总之,MessageListener回调函数是一种在消息通信中用于接收处理消息的函数。通过注册该函数到消息队列中,消息消费者可以异步地接收处理消息,提高系统的并发性响应速度。同时,MessageListener回调函数还具有灵活性,可以实现消息的监听订阅功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

黄毛火烧雪下

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

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

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

打赏作者

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

抵扣说明:

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

余额充值