LMAX Disruptor with Kotlin:不能使用 lambda?

LMAX Disruptor with Kotlin: Can't use lambda?

例如 Java 我可以用 LMAX disruptor 做到这一点:

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

在 Kotlin 中,我尝试了这个等价物:

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

但是我遇到了这个错误:

首先,你不需要指定T,kotlin可以推断出来。

第二个错误消息说出了什么问题, Disruptor 想要一个 EventFactory,但你向它传递了一个简单的 lambda。

如果您想将 lambda 作为 SAM 接口传递,有时需要在 lambda 前面加上接口名称。

尝试以下(未经测试):

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