当前位置: 首页 > 知识库问答 >
问题:

如何在Java中轻松使用Kotlin频道生成器?

乜建柏
2023-03-14

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

作为改进长期运行流程实现的一部分,我想使用协程。具体来说,来自kotlinx.coroutines包的通道生产者。

例如:

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

在Java中使用它的最佳方式是什么?我可以向Kotlin和/或Java添加临时“helper”函数。

共有2个答案

伍胡媚
2023-03-14

目前,假设使用了Java 8并且lambda可用,我依赖于Kotlin中定义的助手函数,该函数允许传递回调以使用传入的结果。

Kotlin中的助手方法:

fun exampleProducerCallback( callback: (String) -> Unit ) = runBlocking {
    exampleProducer().consumeEach { callback( it ) }
}

然后在Java中作为以下内容使用:

ApiKt.exampleProducerCallback( text -> {
    System.out.print( text );
    return Unit.INSTANCE; // Needed since there is no void in Kotlin.
} );

解释返回单元的原因。在这个答案中可以找到需要的实例。

汪弘毅
2023-03-14

与Java交互通道的最简单方法是通过反应流。Rx和项目Reactor都是开箱即用的。例如,将kotlinx-coroutines-rx2添加到依赖项中,您将能够使用rxFlowable构建器:

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

此函数返回一个可流动的实例,该实例是专门为从Java易于使用而设计的,例如,您可以在Java中执行以下操作:

exampleFlowable().subscribe(t -> System.out.print(t));
 类似资料:
  • 问题内容: 我想使用Jersey来实现一些Java REST服务。默认的POJO转换器JAXB处理JSON对象有点奇怪,因此我想使用Jackson转换POJO的开销很少或更少。我如何告诉J2ME框架使用另一个转换器? 我的web.xml看起来像这样: 问题答案: 只需添加jackson JAR并修改web.xml即可,如下所示: 所需的Jackson Jackson JAR(http://jack

  • 我使用下面的maven pom。xml文件,无法生成querydsl文件。 我发现了一个问题:Kotlin Kapt注释处理器不能与maven一起工作 我想从kotlin实体类生成jpa querydsl文件。 网上有一个很好的例子,说明如何使用 https://github.com/JetBrains/kotlin-examples/blob/master/gradle/kotlin-query

  • 问题内容: 是否有任何适用于PHP的工具可用于基于WSDL生成使用Web服务的代码?相当于单击Visual Studio或Eclipse插件中的“添加Web引用”,这对于Java具有相同的作用。 问题答案: wsdl2php取得了很大的成功。它将自动为Web服务中使用的所有对象和方法创建包装器类。

  • 我想在Kotlin中为我的魔方解算器应用程序生成10毫秒,我该怎么做?我有一个自定义视图,它是一个计时器,我想每10毫秒更新一次计时器

  • 问题内容: 我有一个可以正常工作的Rest Web服务,它使用JBoss Resteasy,但是当我尝试移植它以使用GAE时,执行时出现此错误: 问题答案: 我在GAE上成功使用resteasy。正如csturtz所述,请确保您的项目具有resteasy依赖性。 如果您使用Maven,应该是这样的: 并且您还可以选择使用:

  • 前言 上一篇《函数式编程入门经典》,罗嗦了很长,很多小伙伴看得云里雾里。这里提供一个实例,让大家切身感受函数式编程的奥妙和趣味。当然,仅仅为了举例而写代码就没有什么意义了,本书提供的例子都是承担了某项任务的具体项目或工具,这个例子自然也不能例外。 本书用到了大量的Uml类图,经常有小伙伴问我用什么工具画的。说实话,前几篇是我个人一点点手工整理的,但后来就感觉在浪费生命,作为程序员,怎么可能容忍这样