在java中调用kotlin完成

Sea*_*ins 2 java android functional-programming kotlin

我有一个 kotlin Web 请求方法,它将函数作为参数。由于我的一个类是如何设置的,我需要将它保留为一个 java 类,但我需要从 java 类调用 web 请求方法。

我有一个名为的类Lock,我正在使用它从我的数据库中获取Fuel

我的kotlin方法如下

fun fetchLocks(completion: (Array<Lock>) -> Unit) {
  // asynchronous api calls that aren't relevant.
  completion(locks)
}
Run Code Online (Sandbox Code Playgroud)

我知道这个方法有效并且能够从 kotlin 文件中调用它

FuelHelper().fetchLocks { locks ->
  Do stuff with my locks
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是获取正确的语法以便在 java 中调用此方法。

new FuelHelper().fetchLocks();
Run Code Online (Sandbox Code Playgroud)

java期望的参数是 (Function1<?super Lock[], Unit>)

我已经尝试了一段时间,但无法克服这一点。任何帮助,将不胜感激。

Jin*_*Jin 6

假设您使用的是 java 8 语法。

new FuelHelper().fetchLocks(locks -> {
    ...
});
Run Code Online (Sandbox Code Playgroud)

或者没有 lambda

new FuelHelper().fetchLocks(new Function1<Lock[], Unit>() {
        @Override
        public Unit invoke(Lock[] locks) {
            return null;
        }
    });
Run Code Online (Sandbox Code Playgroud)