如何解决在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;
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。