为了账号安全,请及时绑定邮箱和手机立即绑定

Kotlin 函数式接口 java 兼容性

Kotlin 函数式接口 java 兼容性

慕尼黑的夜晚无繁华 2021-06-22 17:12:51
我在 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 标准库。


查看完整回答
反对 回复 2021-06-30
?
拉莫斯之舞

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")

}


查看完整回答
反对 回复 2021-06-30
  • 3 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号