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

相关推荐
小师兄吃牛肉10 分钟前
Java语法 | 多重循环
java·开发语言·python
Han.miracle23 分钟前
MySQL InnoDB:MVCC、记录锁、间隙锁、二级索引MVCC底层原理
java·开发语言
不停喝水1 小时前
【前端转全栈java速通课】 项目实战④7-11节 操作数据库-登录-注册-修改密码-注销-mubatis-plus简化crud-
java·前端·数据库
y1su1 小时前
Leetcode 二分模板
java·数据结构·算法·leetcode·排序算法
霸道流氓气质1 小时前
多Agent通信机制与协议设计完全指南:从FIPA-ACL到A2A/MCP的Java生产级实战
java·开发语言
007张三丰1 小时前
C/C++ 内存管理详解:从内存分布到 new/delete 底层原理
java·c语言·c++·内存管理
骇客野人2 小时前
Java BIO / NIO / AIO 完整详解 + 编程技巧
java·开发语言·nio
霸道流氓气质2 小时前
OpenTelemetry 入门与实战:Java Agent、Spring Boot Starter与LLM调用追踪示例
java·开发语言·spring boot
m0_587383002 小时前
24 小时自助健身房系统软件开发实战指南与案例解析
java·spring boot·spring·系统架构·需求分析