我在 kotlin 中开发一个应用程序,但需要有良好的 Java 支持。我发现的问题是 kotlin 的函数。这是我以前做的fun test(loader: (String) -> Int)但这将从 kotlin 库编译成 Function1 并且由于 jar 大小,我没有将 kotlin 库直接包含在 jar 中,这使 Java 开发人员更难,因为他们必须下载 kotlin 库才能使用它方法。我尝试使用 Java 中的供应商或函数接口,但我发现这对 kotlin 开发人员来说要困难得多,因为您必须提供更多的变量类型和空检查以及通用参数,这很痛苦..还尝试创建自己的界面,例如@FunctionalInterfaceinterface Function<in T, out R>: Function<R> { operator fun invoke(p: T): R}和功能fun test(loader: Function<String, Int>)但它与默认的 java Function 接口相同所以唯一可行的方法是让编译器将我的原始函数编译为我自己的函数接口,而不是 kotlin 的函数接口。但我不知道该怎么做。
3 回答

神不在的星期二
TA贡献1963条经验 获得超6个赞
它使 Java 开发人员更难,因为他们必须下载 kotlin 库才能使用此方法
JVM 开发人员使用构建系统,例如 Maven 或 Gradle。尝试手动管理依赖项只是一个坏主意。如果在实现中使用了任何 Kotlin 特定的类型,则仍然需要 Kotlin 标准库。

拉莫斯之舞
TA贡献1820条经验 获得超10个赞
在 kotlin 1.4 中,他们增加了定义我们自己的功能接口的能力
fun interface Function<in T, out R> {
operator fun invoke(p: T): R
}
fun test(loader: Function<String, Int>) {
val result = loader("5")
}
添加回答
举报
0/150
提交
取消