这是我的科特琳课:
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']