如何调用java中的Kotlin?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (54)

我有一个Kotlinweb请求方法,能接受一个函数作为参数。需要从java类调用web请求方法,请问怎样实现?

代码如下:

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

以下方法能从kotlin文件中调用

FuelHelper().fetchLocks { locks ->
  Do stuff with my locks
}
new FuelHelper().fetchLocks();

有什么好的方法吗?

提问于
用户回答回答于

必须传递一个对象实现接口Function1:

/** A function that takes 1 argument. */
public interface Function1<in P1, out R> : Function<R> {
    /** Invokes the function with the specified argument. */
    public operator fun invoke(p1: P1): R
}

可以创建新的抽象对象:

    new FuelHelper().fetchLocks(new Function1<Lock[], Unit>() {
        @Override
        public Unit invoke(Lock[] locks) {
            // handle locks
            return null;
        }
    });
用户回答回答于

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

new FuelHelper().fetchLocks(locks -> {
    ...
});

在没有lambda的情况下:

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

扫码关注云+社区

领取腾讯云代金券