[英]How to read with java a callback from a kotlin class (Android)
这是我的 kotlin 课程:
class example {
var a = 0
fun add(b: Int, callback: (Int) -> Unit){
a += b
callback(a)
}
}
我如何在java代码中使用这个函数?
编辑:正如评论中提到的@Drawn Raccoon,您可以通过返回Unit.INSTANCE从java代码中调用add
方法:
爪哇:
example e = new example();
e.add(16, a -> {
// do some work with 'a'
return Unit.INSTANCE;
});
或者从 kotlin 调用它而不返回任何值:
科特林:
add(16) {
a -> // do some work with 'a'
}
不正确(正确答案请参阅编辑部分):
我认为您不能将Unit
类型用于将从 java 代码调用的回调的输出类型。 在 Java 中无法识别Unit
。 相反,您可以使用Void?
(我不知道“Void”,现在我无法测试它)。
科特林中的代码:
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']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.