上一篇是纯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()