kotlin 多接口回调的实现方式(一)

在kotlin中,lambda的方式只能使用一个接口回调,这里通过对代码改写,实现多接口方式

package com.example.kotlinapplication

import org.junit.Test

/** 多接口回调的代码测试 */

typealias Fun1 = (String) -> Unit
typealias Fun2 = (String,String) -> Unit
typealias Fun3 = (Fun1)->Unit
typealias Fun4 = (Fun2)->Unit
typealias CallBack = (Fun3,Fun4) -> Unit

class MultiCallBack{
    lateinit var newCall:CallBack

    //用于实现接口回调的方法
    fun callBack(call: CallBack){
        newCall = call
        println("callBack调用")
    }

    var mFun:Fun1? = null
    //第一次赋值
    fun setCallBack(){
        println("setCallBack调用")
        val fun1:Fun3 = {
            mFun = it
        }
        val fun2:Fun4 = {
            it("2","3")
        }
        newCall(fun1,fun2)

    }

    //第二次赋值
    fun setCallBack2(){
        println("调用setCallBack2")
        mFun?.invoke("重新复制")
    }

    //测试代码
    @Test
    fun callBackTestMain(){
        callBack{ fun0,fun1 ->
            fun0{
                println("fun0读取的内容:$it")
            }
            fun1{ value1,value2 ->
                println("fun1读取的内容:value1-->${value1}和value2---->${value2}")
            }
        }
        setCallBack()
        setCallBack2()
    }
}

**执行结果:**

callBack调用
setCallBack调用
fun1读取的内容:value1-->2和value2---->3
调用setCallBack2
fun0读取的内容:重新复制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值