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

相关推荐
Aurorar0rua6 小时前
CS50 x 2024 Notes C - 05
java·c语言·数据结构
Cosmoshhhyyy6 小时前
《Effective Java》解读第49条:检查参数的有效性
java·开发语言
布谷歌7 小时前
常见的OOM错误 ( OutOfMemoryError全类型详解)
java·开发语言
eLIN TECE7 小时前
springboot和springframework版本依赖关系
java·spring boot·后端
老神在在0017 小时前
Spring Bean 的六种作用域详解
java·后端·spring
仙草不加料7 小时前
互联网大厂Java面试故事实录:三轮场景化技术提问与详细答案解析
java·spring boot·微服务·面试·aigc·电商·内容社区
程序员老邢7 小时前
【技术底稿 19】Redis7 集群密码配置 + 权限锁死 + 磁盘占满连锁故障真实排查全记录
java·服务器·经验分享·redis·程序人生·微服务
落魄江湖行8 小时前
基础篇一 Java 有了 int 为什么还要 Integer?它们到底差在哪?
java·面试·八股文
LiLiYuan.8 小时前
【Java 6种线程状态】
java·开发语言
itzixiao9 小时前
L1-047 装睡 (5分)[java][python]
java·开发语言·python