Kotlin高阶函数作为参数与Java普通接口interface等效性

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)

相关:

https://blog.csdn.net/zhangphil/article/details/157472980

相关推荐
Emily156853598702 小时前
Emerson 1C31129G03 Analog Input Module
java·开发语言·前端·plc·emerson·1c31129g03·input module
就叫_这个吧7 小时前
Java递归方法实现面包屑导航
java·开发语言
fīɡЙtīиɡ ℡7 小时前
AI 应用系统设计
java·开发语言·人工智能
城管不管7 小时前
重生——第十一次面试之挖财一面2026.8.19已OC
java·服务器·jvm·数据库·spring·面试·职场和发展
码匠许师傅7 小时前
【C++ 面试真题】26. 聊聊 C++ 的智能指针
java·c++·面试
AI绘画哇哒哒7 小时前
【建议收藏!】35岁后端血泪忠告,这3类人别硬转Agent(过来人亲述)
java·人工智能·后端·ai·程序员·大模型·agent
最强小杰8 小时前
gpt-5.6-sol 频繁报 503 怎么办?区分容量熔断和限速 429 的排查方法 + 可复用 retry wrapper
java·人工智能·gpt·ai
吠品10 小时前
Wine 在 Linux 上运行 Windows 软件完整指南
java·linux·服务器
亚历克斯神11 小时前
智能搜索系统的升级复盘——从 Elasticsearch 到混合检索的检索质量提升
java·spring·微服务
金銀銅鐵12 小时前
[Java] 一个方法最多可以有多少个入参?
java·jvm