如何在Java代码中以函数作为参数调用Kotlin函数?
我有一个kotlin方法,如下所示:如何在Java代码中以函数作为参数调用Kotlin函数?,java,android,lambda,kotlin,Java,Android,Lambda,Kotlin,我有一个kotlin方法,如下所示: fun methodWithCallBackAsParameter(callback:() -> Unit) { //Do Somejob callback() } 在kotlin中,我们仅使用以下语法的此方法: methodWithCallBackAsParameter { //Some Instructions here. } 现在我想在Java类中使用这个Kotlin方法,但我不知道如何使用。只需在lambda表达式的
fun methodWithCallBackAsParameter(callback:() -> Unit) {
//Do Somejob
callback()
}
在kotlin中,我们仅使用以下语法的此方法:
methodWithCallBackAsParameter {
//Some Instructions here.
}
现在我想在Java类中使用这个Kotlin方法,但我不知道如何使用。只需在lambda表达式的末尾返回Unit.INSTANCE。如果你想在android中使用lambda,你必须将你的应用程序改为使用Java 1.8,而不是1.7,你可以从gradle开始使用它
android {
...
// Configure only for each module that uses Java 8
// language features (either in its source code or
// through dependencies).
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
要了解更多信息,请在Java中使用此文档:
callback:()->Unit=new Function0()
,我相信您希望这样做
公共类程序{
公共静态void main(字符串[]args){
FunctionKt.methodWithCallBackAsParameter(()->{
System.out.printf(“做某事”);
返回null;
});
}
}
在本例中,函数
methodWithCallBackAsParameter
是在function.kt
文件中定义的。不methodWithCallBackAsParameter(()->{})代码>工作?它说缺少返回语句。我尝试返回Unit.INSTANCE;现在它说,Lambda表达式在语言级别7不受支持。如果您使用的是Android Studio 3.0+,那么您只需将一段代码复制粘贴到build.gradle中即可启用Java 8语言功能,请参见我尝试返回的Unit.INSTANCE;现在,语言级别7不支持Lambda表达式。请将语言级别设置为1.8或将Lambda转换为匿名类。发生此错误是因为Java 1.8支持lambda,并且您的项目使用Java 1.7。