如何在Java代码中以函数作为参数调用Kotlin函数?

时间:2018-11-16 13:13:17

标签: java android lambda kotlin

我的kotlin方法如下:

fun methodWithCallBackAsParameter(callback:() -> Unit) {
    //Do Somejob
    callback()
}

在kotlin中,我们只需使用以下语法即可使用此方法:

methodWithCallBackAsParameter {
    //Some Instructions here.
}

现在,我想在Java类中使用此Kotlin方法,但我不知道该怎么做。

4 个答案:

答案 0 :(得分:1)

只需在lambda表达式的末尾返回Unit.INSTANCE。

答案 1 :(得分:1)

如果要在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
  }
}

有关更多信息,请参阅本文档https://developer.android.com/studio/write/java8-support

答案 2 :(得分:0)

我相信您想这样做。

    public class Program {

    public static void main(String[] args) {
        FunctionKt.methodWithCallBackAsParameter(() -> {
            System.out.printf("do something");
            return null;
        });
    }
}

在本例中,函数 methodWithCallBackAsParameter 是在 function.kt 文件中定义的。

答案 3 :(得分:-1)

在 Java 中使用时:callback: () -> Unit = new Function0<>()