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

上一篇是纯kotlin实现,这一篇是基于现有Java接口做的kotlin拓展,最早是在stackoverflow上看的(现在忘了地址是哪个)。只是当时没看懂,当完成上一篇后,再看这一篇时候忽然就明白了作者的意思,这里做个记录。
代码可以直接运行,可以先运行下看下例子:

interface Callbacks {

    fun onCurrentLocation(location: String)

    fun onError()
}

class CallbacksImpl(private val onCurrentLocationF: (String) -> Unit, private val onErrorF: () -> Unit) : Callbacks {
    override fun onCurrentLocation(location : String) { onCurrentLocationF(location) }

    override fun onError() { onErrorF() }
}

lateinit var mCallBack: CallbacksImpl
fun  setListener(callBack: CallbacksImpl){
    println("-------->设置接口回调")
    mCallBack = callBack
}

fun error(){
    println("-------->调用回调监听")
    mCallBack.onError()
}

class TestIpc{//定义类是因为只有方法的时候Test没法运行
    @Test
    fun testIpc(){
        setListener(CallbacksImpl({

        },{
            println("----打印错误结果---->onError()")
        }))

        error()
    }
}

执行结果如下:

-------->设置接口回调
-------->调用回调监听
----打印错误结果---->onError()

你可能感兴趣的:(Java,kotlin)