Kotlin高阶函数作为参数与Java普通接口interface等效性
Kotlin高阶函数与Java接口等效性对比:Kotlin高阶函数作为参数与Java普通接口的等效实现方式。通过asyncTask函数展示了两种回调处理方案:使用Lambda表达式(高阶函数)和实现ICallback接口。两种方式最终输出结果相同,表明Kotlin的高阶函数可以替代传统的接口回调模式,简化代码结构。示例包含异步任务模拟(longWork)和结果回调处理,验证了两种方式的执行流程和输出一致性。Kotlin的高阶函数fuc,相对于传统Java接口实现更为简洁、简单。
Kotlin
fun main() {
val req1 = "hello,world! 1"
asyncTask(req1, { req, resp ->
println("$req1 req = $req, resp = $resp")
})
val req2 = "hello,world! 2"
asyncTask(req2, object : ICallback {
override fun callback(req: Any?, resp: Any?) {
println("$req2 req = $req, resp = $resp")
}
})
}
fun asyncTask(any: Any?, func: (req: Any?, resp: Any?) -> Unit) {
longWork(any)
func.invoke(any, Result.success("$any OK"))
}
fun asyncTask(any: Any?, callback: ICallback) {
longWork(any)
callback.callback(any, Result.success("$any OK"))
}
interface ICallback {
fun callback(req: Any?, resp: Any?)
}
private fun longWork(any: Any?) {
println("$any longWork start")
Thread.sleep(1000)
println("$any longWork end")
}
输出:
hello,world! 1 longWork start
hello,world! 1 longWork end
hello,world! 1 req = hello,world! 1, resp = Success(hello,world! 1 OK)
hello,world! 2 longWork start
hello,world! 2 longWork end
hello,world! 2 req = hello,world! 2, resp = Success(hello,world! 2 OK)
相关: