Редактировать: Как упоминалось в комментариях @Drawn Raccoon, вы можете вызвать метод add
из кода java, просто возвратив Unit.INSTANCE:
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. Unit
не распознается в Java. Вместо этого вы можете использовать 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
})
[Кроме того, «пример» не подходит для kotlin или java классы и попробуйте использовать верхний регистр, как 'Пример']