Giu*_*ius 0 java android callback kotlin
这是我的科特林课程:
class example {
var a = 0
fun add(b: Int, callback: (Int) -> Unit){
a += b
callback(a)
}
}
Run Code Online (Sandbox Code Playgroud)
如何在java代码中使用这个函数?
编辑:
正如@Drawn Raccoon在评论中提到的,您可以add通过返回Unit.INSTANCE从java代码中调用该方法:
爪哇:
example e = new example();
e.add(16, a -> {
// do some work with 'a'
return Unit.INSTANCE;
});
Run Code Online (Sandbox Code Playgroud)
或者从 kotlin 调用它而不返回任何值:
科特林:
add(16) {
a -> // do some work with 'a'
}
Run Code Online (Sandbox Code Playgroud)
不正确(正确答案请参阅编辑部分):
我认为你不能使用Unittype 作为将从 java 代码调用的回调的输出类型。UnitJava 不识别。相反,您可以使用Void?(我不知道“Void”,现在我无法测试它)。
科特林代码:
class example {
var a = 0
fun add(b: Int, callback: (Int) -> Void?){
a += b
callback(a)
}
}
Run Code Online (Sandbox Code Playgroud)
并从 java 调用它:
example e = new example();
e.add(16, a -> {
// do some work with 'a'
return null;
})
Run Code Online (Sandbox Code Playgroud)
并从 kotlin 调用:
val example = example()
e.add(16, { a ->
// do some work with 'a'
null
})
Run Code Online (Sandbox Code Playgroud)
[此外,“example”对于 kotlin 或 java 类来说不是一个好名字,请尝试使用大写,例如“Example”]
| 归档时间: |
|
| 查看次数: |
1439 次 |
| 最近记录: |