Потребитель, играющий странно в Котлине

Я просто возвращаюсь в Котлин (переход из java), и я заметил, что использование Consumer сложнее, чем кажется.

 class EventBus(controller: Controller) { private val consumerMap : MutableMap<KClass<out Event>, MutableSet<Consumer<out Event>>> = ConcurrentHashMap() private val controller : Controller = controller public fun <T : Event> register(clazz: KClass<T>, handler: Consumer<T>) { consumerMap.getOrPut(clazz, { HashSet() }).add(handler) } public fun <T : Event> post(event : T) { consumerMap[event.javaClass.kotlin]?.forEachIndexed { i, handler -> controller.getLogger().trace("Firing handler ${i + 1} for event ${event.javaClass.name}") handler.accept(event) } } } 

Я пытаюсь сделать простой класс для запуска мертвых базовых событий, единственная проблема заключается в том, что IntelliJ метод accept не существует. Однако, когда я пытаюсь создать нового потребителя и использовать его сразу, метод accept существует и работает так, как ожидалось.

http://pksv.co/go/myOeEvTE

Есть ли что-то, что я, возможно, пропустил или пропустил?

Дурак я. Я так долго проснулся в голове. Замена Consumer<out Event> (и других пользователей) с помощью (Event) -> Unit очистил все!

Для всех, кто интересуется кодом:

 class EventBus(controller: Controller) { private val consumerMap : MutableMap<KClass<out Event>, MutableSet<(Event) -> Unit>> = ConcurrentHashMap() private val controller : Controller = controller public fun <T : Event> register(clazz: KClass<T>, handler: (T) -> Unit) { consumerMap.getOrPut(clazz, { HashSet() }).add(handler as (Event) -> Unit) // hacky cast :-) } public fun <T : Event> post(event : T) { consumerMap[event.javaClass.kotlin]?.forEachIndexed { i, handler -> controller.getLogger().trace("Firing handler ${i + 1} for event ${event.javaClass.name}") handler.invoke(event) } } } 
Intereting Posts
kapt2 и butterknife производят ошибку lint: ожидаемый ресурс идентификатора типа Как использовать аннотацию Jackson JsonSubTypes в Kotlin Ошибки Kotlin и EasyMock Просмотр Recycler не плавно прокручивается Как исправить ошибку Dagger 2? … не может быть предоставлено '? Линии рисования из ViewModel TornadoFX Как получить значение перечисления типа raw из класса enum и строки в kotlin Получать размер процентного содержания Guideline в пикселях Оценки Котлина и Верхнего типа с ковариацией Как настроить приложение Gluon с помощью Kotlin и Tornado FX Как не перезаписывать данные с помощью onDataChange? Каков правильный способ работы с полями в Котлине? Как скомпилировать и использовать код Kotlin во время выполнения? Можно ли использовать javascript из источников Kotlin в JVM? В android kotlin, используя библиотеку степпера, передавая пользовательские значения переключателей по нескольким фрагментам, которые будут использоваться на сводной странице