作为开发新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));