Intereting Posts
Внутренний класс создает неудачу в Котлине kotlin: некоторые проблемы с массивами в аннотациях Позиция метки `@` в Котлине, обозначая приемник с `this` Не удается найти целевое тело после запуска Jfinal веб-приложения с kotlin Смарт-бросок в BootsrapButton невозможен, потому что endtrip является изменчивым свойством, которое к этому времени изменилось Android Firestore Spinner не загружает мой документ Отражающая функция вызова и использование параметров по умолчанию Как переопределенные свойства обрабатываются в блоках init? Наследовать от абстрактного класса с умножением варов в Котлине Kotlin: Не удается найти класс символов Фрагмент или другие классы Android Модификаторы видимости kotlin не совпадают Kotlin – lateinit TestRestTemplate не инициализирует интеграционные тесты Войти в firebase в студии kotlin android Kotlin: «synchronized» заставляет компилятор не быть уверенным в инициализации переменной Добавление данных в массивList из другого действия

LMAX Disruptor с Kotlin: нельзя использовать лямбда?

Например, в Java я могу сделать это с помощью LMAX disruptor:

Disruptor<NetworkEvent> disruptor = new Disruptor<>(NetworkEvent::new, 2048, Executors.newSingleThreadedExecutor());

В Котлин я пробую этот эквивалент:

val disruptor = Disruptor<NetworkEvent>({ NetworkEvent() }, 2048, Executors.newSingleThreadExecutor())

Но меня приветствует эта ошибка:

введите описание изображения здесь

Solutions Collecting From Web of "LMAX Disruptor с Kotlin: нельзя использовать лямбда?"

Прежде всего, вам не нужно указывать T, kotlin может это сделать.

Во-вторых, сообщение об ошибке говорит, что неправильно, Disruptor хочет EventFactory, но вы передаете ему простую лямбду.

Если вы хотите передать лямбда в качестве интерфейса SAM, иногда необходимо перевести лямбда с именем интерфейса.

Попробуйте следующее (непроверенное):

 val disruptor = Disruptor(EventFactory { NetworkEvent()}, 2048,....)