在Java中使用Lambda参数调用Kotlin函数

在Java中使用Lambda参数调用Kotlin函数,java,kotlin,Java,Kotlin,如何在Java类的参数中使用lambdas调用Kotlin函数 范例 fun getToken( tokenUrl: String, onSuccess: (String) -> Unit, onError: (Error) -> Unit ): Provider { //Implementation } 这是为了在Kotlin内部调用它,在我提供答案后,问题被编辑为“来自Java”。不管怎样,还是把它

如何在Java类的参数中使用lambdas调用Kotlin函数

范例

fun getToken(
        tokenUrl: String,
        onSuccess: (String) -> Unit,
        onError: (Error) -> Unit
    ): Provider {
        //Implementation
    }

这是为了在Kotlin内部调用它,在我提供答案后,问题被编辑为“来自Java”。不管怎样,还是把它留在这里,希望它有用

你可以这样称呼它

fun测试(){
getToken(“asdf”,{print(it)},{println(it)})
getToken(“asdf”,{print(it)}{err->println(err)}
getToken(“asdf”,::println,::println)
getToken(“asdf”,::println){println(it)}
}

您可以使用普通的Java 8 lambda调用它,因为Kotlin实际上在后端使用一个方法接口

myFoo.getToken(tokenUrl, successString -> { ... }, error -> { ... });
你可以这样做

    value.getToken("url",
    new Function1<String, Unit>() {
        @Override
        public Unit invoke(String s) {
            /* TODO */
            return Unit.INSTANCE;
        }
    }, new Function1<Throwable, Unit>() {
        @Override
        public Unit invoke(Throwable throwable) {
            /* TODO */
            return Unit.INSTANCE;
        }
    });
value.getToken(“url”,
新功能1(){
@凌驾
公共单元调用(字符串s){
/*待办事项*/
返回Unit.INSTANCE;
}
},新功能1(){
@凌驾
公共单元调用(可丢弃可丢弃){
/*待办事项*/
返回Unit.INSTANCE;
}
});

lambda只是KotlinI中的一个闭包,知道如何在Kotlin中调用它。我想从Java类中调用函数。您的原始问题已编辑。之前它没有说来自Java。我认为我收到的反对票是不必要的,是的,但只是在标题上。在你回答错误后,我将其添加到了正文中,以便进一步澄清<代码>使用Java中的Lambda参数调用Kotlin函数。我认为你没有必要否决我的问题。我没有否决你的问题。我还假设其他人对我的答案投了反对票,因为你已经了解了全部情况,并且会理解为什么我的答案看起来不正确。谢谢!不幸的是,我的项目没有设置为Java8。不要忘记添加
returnunit.INSTANCE。如果答案是正确的,则此注释应该是答案的一部分@Francesc您能更新您的答案以包含评论吗?谢谢