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,....)