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

标签 java android kotlin functional-interface

我正在使用分别用 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/

相关文章:

android-apt 找不到 AndroidManifest.xml 尽管它存在

java - 如何缩放 Android TableLayout

Kotlin 简单泛型函数编译错误 (*)

java - 在 Swing 中显示图形时遇到问题

java - 尝试获取大附件时出现异常

java - 无法从新上传的 Excel 文件中读取数据

java - Kotlin 中 getOrElseReturn 的可能性

java - 应用程序在 Debug模式下运行顺利,但在 Release模式下崩溃

Kotlin - toSet() 与 distinct()

android - 选择要在 Android Studio 中自动缩进忽略的代码