gpt4 book ai didi

java - 如何使用 java 从 kotlin 类读取回调 (Android)

转载 作者:行者123 更新时间:2023-12-02 09:07:51 25 4
gpt4 key购买 nike

这是我的 kotlin 类:

class example {

var a = 0

fun add(b: Int, callback: (Int) -> Unit){
a += b
callback(a)
}
}

如何在 java 代码中使用此函数?

最佳答案

编辑:正如 @Drawn Raccoon 在评论中提到的,您可以通过返回 Unit.INSTANCE 从 java 代码调用 add 方法:

Java:

example e = new example();
e.add(16, a -> {
// do some work with 'a'
return Unit.INSTANCE;
});

或者从 kotlin 调用它而不返回任何值:

Kotlin :

add(16) {
a -> // do some work with 'a'
}

不正确(正确答案请参阅编辑部分):

我认为您不能使用 Unit 类型作为将从 java 代码调用的回调的输出类型。 Java 无法识别 Unit。相反,您可以使用 Void? (我不知道“Void”,现在无法测试它)。

kotlin 代码:

class example {

var a = 0

fun add(b: Int, callback: (Int) -> Void?){
a += b
callback(a)
}
}

并从 java 调用它:

example e = new example();
e.add(16, a -> {
// do some work with 'a'
return null;
})

并从 kotlin 调用:

val example = example()
e.add(16, { a ->
// do some work with 'a'
null
})

[此外,“example”对于 kotlin 或 java 类来说不是一个好名字,请尝试使用大写,例如“Example”]

关于java - 如何使用 java 从 kotlin 类读取回调 (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59668531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com