繁体   English   中英

将 java.util.function.Function 转换为 Kotlin 的函数式接口类型

[英]Converting java.util.function.Function to Kotlin's functional interface type

我正在使用分别用 Java 和 Kotlin 编码的两个模块,因此需要一些互操作性。

在其中一种情况下,java 模块返回类型为java.util.function.Function函数式接口,该接口将由 kotlin 代码使用。

我可以按原样使用 java 类型。 但是,我希望能够将其转换为 kotlin 的原生类型,无论是kotlin.Function还是kotlin.reflect.KFunction 这样做的原因是能够支持与 java 模块类似的 kotlin 模块,该模块为客户端提供函数。

有没有办法做到这一点?

您不能在它们之间进行转换,它们只是两个不同的接口。 但是编写转换函数很简单:

import java.util.function.Function

fun <A, B> Function<A, B>.toKotlin(): (A) -> B = { this.apply(it) }

fun <A, B> ((A) -> B).toJava(): Function<A, B> = Function { this(it) }

kotlin-stdlib-jdk8可以提供这些,但似乎没有。

当然,在大多数情况下,您可以同时使用 Kotlin 和 Java lambdas/method 引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM