Intereting Posts
Растровое изображение холста?) Комната: связанные объекты – полезный публичный конструктор Android Kotlin: Смысл бесплатной функции с использованием Mockito / PowerMock Аномалии покрытия кода в Android (Kotlin) Как получить объект внутри документа в Firestore Как реорганизовать представление, чтобы разрешить фильтрацию элементов, привязанных к наблюдаемомуArrayList, внутри приложения tornadofx Как получить javaclass из массива java-типа в Котлине? Экспериментальная поддержка JUnit в Android + Kotlin не работает В чем разница между var map = HashMap <Int, String> () и var map = HashMap <Int, String> (n)? Простой класс kotlin с mockito-тестом вызвал MissingMethodInvocationException Котлин не видит аксессуаров Java Lombok? Mapbox OfflineRegionObserver прослушиватель unregister Ошибка приложения из-за того, что экземпляр экземпляра lateinit не инициализирован Как добавить плагин Kotlin для Gradle в Android Studio 3.1 Canary 3 Вызов функции Java с vararg, не компилируемым в Котлине

Интерфейс реализации класса 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() }