在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读取的内容:重新复制