kotlin 多接口回调的实现方式

没啥好说的,看标题就明白了。代码比较绕,慢慢看….
本来想解释下代码,不过可能还在受上一篇帖子的影响吧,不知道说些什么…
有不明白的留言吧…
可以先把代码复制一份到电脑上运行一下,先看看效果

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()
    }
}

猜你喜欢

转载自blog.csdn.net/Mr_Tony/article/details/82718381