将java.util.function.Function转换为Kotlin的功能接口类型

问题描述 投票:1回答:1

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

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

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

有没有办法做到这一点?

java android kotlin functional-interface
1个回答
1
投票

你不能在他们之间施放,他们只是两个不同的界面。但是编写转换函数是微不足道的:

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 /方法引用。

© www.soinside.com 2019 - 2024. All rights reserved.