我正在使用分别用 Java 和 Kotlin 编码的两个模块,因此需要一些互操作性。
在其中一种情况下,java 模块返回类型为 java.util.function.Function
的函数接口(interface),它将被 kotlin 代码使用。
我可以按原样使用 java 类型。但是,我希望能够将其转换为 kotlin 的原生类型,无论是 kotlin.Function
还是 kotlin.reflect.KFunction
。这样做的原因是为了能够支持与 java 模块类似的 kotlin 模块,该模块为客户端提供功能。
有什么办法吗?
最佳答案
你不能在它们之间转换,它们只是两个不同的接口(interface)。但是编写转换函数很简单:
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/方法引用。
关于java - 将 java.util.function.Function 转换为 Kotlin 的函数式接口(interface)类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55057353/