相关疑难解决方法(0)

如何为Java调用者声明返回类型为“ void”的Kotlin Lambda?

我有一个完全用Kotlin编写的库,包括其公共API。现在,该库的用户使用Java,这里的问题是带有返回类型的Kotlin Lambdas Unit没有被编译为返回类型void。结果是Java端必须始终返回Unit.INSTANCE有效的方法void。可以避免这种情况吗?

例:

Kotlin Lambda

interface Foo{
  fun bar(x:(String)->Unit)
}
Run Code Online (Sandbox Code Playgroud)

Java调用

public void call(){
   foo.bar(this::processString)
}

//the return type should rather be void instead of Unit
public Unit processString(String s){  
    return Unit.INSTANCE 
    // ^^ implementations should not be forced to return anything 
 }
Run Code Online (Sandbox Code Playgroud)

是否可以以不同的方式声明Kotlin Lambda,以便编译器生成void返回类型?

另请参阅如何为Java调用程序声明返回类型为“ void”的Kotlin函数?

java lambda kotlin

5
推荐指数
1
解决办法
1606
查看次数

标签 统计

java ×1

kotlin ×1

lambda ×1