Интерфейс реализации класса Kotlin anonim

Мой интерфейс kotlin:

interface IRunnable<T> { fun doWork(): T } 

то я создаю анонимный класс, реализовал мой интерфейс:

 executor!!.execute(object : IRunnable<Long> { override fun doWork(): Long { return 0L } }) 

если интерфейс в java, код выглядит

  executor!!.execute(IRunnable2 { return@IRunnable2 0L }) 

Любые идеи, как реализовать интерфейс в kotlin как java?

Solutions Collecting From Web of "Интерфейс реализации класса Kotlin anonim"

пожалуйста, не используйте IRunnable такое именование в kotlin.

Как и в этом вопросе Как kotlin делает setOnClickListener принимать функции как описанные параметры , Kotlin делает SAM только для интерфейсов Java. Но вы можете изменить интерфейс в пользу функционального типа или реализовать интерфейс и использовать его, как в следующем примере:

 fun main(args: Array<String>) { class Executor { fun <T> execute(task: SimpleRunnable<T>): CompletableFuture<T> { return CompletableFuture.supplyAsync { task.doWork() } } } val executor = Executor() executor.execute(SimpleRunnableImpl { "42" }) executor.execute(object : SimpleRunnable<Long> { override fun doWork(): Long { return 0L } }) } interface SimpleRunnable<T> { fun doWork(): T } class SimpleRunnableImpl<T>(val task: () -> T) : SimpleRunnable<T> { override fun doWork(): T = task() }