作为开发新API的一部分,我正在学习使用Kotlin。最初,我希望在Java(Android)项目中使用Kotlin API,但从长远来看,我希望完全采用Kotlin。

作为改进长期运行过程的一部分,我想使用协程。具体来说,是kotlinx.coroutines包中的channel producer

例如:

fun exampleProducer() = produce {
    send("Hello")
    delay(1000)
    send("World")
}

在Java中使用此代码的最佳方法是什么?我可以向Kotlin和/或Java添加临时的“帮助器”功能。

最佳答案

与Java互操作通道的最简单方法是通过Reactive Streams。开箱即用地支持Rx和Project Reactor。例如,将kotlinx-coroutines-rx2添加到您的依赖项中,就可以使用rxFlowable构建器:

fun exampleFlowable() = rxFlowable<String> {
    send("Hello")
    delay(1000)
    send("World")
}

此函数返回Flowable的实例,该实例专门为Java的易用性而设计,例如,您可以在Java中进行操作:
exampleFlowable().subscribe(t -> System.out.print(t));

08-18 17:41
查看更多