将java.util.function.function转换为Kotlin';s功能接口类型

将java.util.function.function转换为Kotlin';s功能接口类型,java,android,kotlin,functional-interface,Java,Android,Kotlin,Functional Interface,我正在使用两个分别用Java和Kotlin编写的模块,因此需要一些互操作性 在其中一种情况下,java模块返回类型为java.util.function.function的函数接口,kotlin代码将使用该接口 我可以按原样使用java类型。但是,我希望能够将其转换为kotlin的本机类型,无论是kotlin.Function还是kotlin.reflect.KFunction。这样做的原因是能够支持与java模块类似的kotlin模块,后者为客户端提供函数 有什么方法可以做到这一点吗?你不能在

我正在使用两个分别用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) }
import java.util.function.function
fun Function.toKotlin():(A)->B={this.apply(it)}
fun((A)->B.toJava():Function=Function{this(it)}
kotlin-stdlib-jdk8
可以提供这些功能,但似乎没有

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