在Android Java中实现完成处理程序lambda

问题描述

我在Kotlin中有一个方法,该方法具有如下所示的回调函数,

@JvmStatic
fun getContents(callBack:(filePath:String,name:String,expiry:Int,metadata:String) -> Unit){

}

我可以在kotlin中访问此功能,但是如何从Java类访问此功能?

解决方法

您有很多方法,我将在下面列出其中一些方法,它应该有助于指导您按照自己的方式进行构建。

用例1-在Kotlin文件中起作用

例如,如果您具有以下kotlin文件:Content.kt

文件内容如下:

fun getContents(callBack: (filePath: String,name: String,expiry: Int,metadata: String) -> Unit) {
}

然后从Java中可以如下调用它:

ContentKt.getContents((filePath,name,expiry,metadata) -> {
  return Unit.INSTANCE;
});

用例#2-在kotlin文件中起作用,更改JVM名称

如果要删除添加到文件名的@file:JvmName(...),或者要给它提供任何其他逻辑名,也可以指定kt

@file:JvmName("Content")

package test

fun getContents(callBack: (filePath: String,metadata: String) -> Unit) {
}

然后您可以这样称呼它:

Content.getContents((filePath,metadata) -> {
    return Unit.INSTANCE;
});

用例#3-随播对象内部或对象中的静态函数

给出以下科特琳课:

class Content {
  companion object {
    @JvmStatic
    fun getContents(callBack: (filePath: String,metadata: String) -> Unit) {
    }
  }
}

或以下对象:

object Content {
  @JvmStatic
  fun getContents(callBack: (filePath: String,metadata: String) -> Unit) {
  }
}

您将通过Java这样访问它:

Content.getContents((filePath,metadata) -> {
    return Unit.INSTANCE;
});

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...