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

相关推荐
xieliyu.6 小时前
Java算法精讲:双指针(三)
java·开发语言·算法
明夜之约6 小时前
Spring Boot 自动装配源码
java·spring boot·后端
Leaton Lee6 小时前
Spring Boot分层架构详解:从Controller到Service再到Mapper的完整流程
java·spring boot·后端·架构
Jinkxs6 小时前
Resilience4j- 与 Spring Boot 快速集成:自动配置与基础注解使用
java·spring boot·后端
辣机小司6 小时前
【踩坑记录:Spring Boot 配置文件读取值不一致?警惕 YAML 的“八进制陷阱”与 SnakeYAML 版本之谜】
java·spring boot·后端·yaml·踩坑记录
fangdengfu1237 小时前
ES分析系统各个服务日志占用量
java·前端·elasticsearch
云烟成雨TD7 小时前
Spring AI 1.x 系列【51】可观测性技术选型
java·人工智能·spring
星越华夏7 小时前
ESP32-CAM图像传输项目说明文档
java·后端·struts·esp32
Jinkxs8 小时前
Java 跨域14-Java 与区块链(Hyperledger)集成
java·开发语言·区块链
晨曦中的暮雨9 小时前
Golang速通(Javaer版)
java·开发语言·后端·golang