В вашем примере с Java вы используете функцию взаимодействия с Java для SAM Conversions . К сожалению, в настоящее время это не работает для интерфейсов Kotlin, так как дизайнеры посчитали это ненужным (некоторые обсуждения по этому поводу см. здесь ).
Вместо этого вы хотели бы сделать что-то вроде:
fun doWithRunnable(runnable: () -> Any) {
// call it as `runnable()`
}
Вы также можете определить typealias для этого, если хотите (что настолько близко, что Kotlin подходит к синтаксису SAM):
typealias RunMe = () -> Any
fun doWithRunnable(runnable: RunMe) {
runnable()
}
Обратите внимание, что в настоящее время typealiases должны быть объявлены на верхнем уровне, они не могут быть объявлены внутри класса или метода.