例如,在Java中,我可以使用LMAX干扰器来做到这一点:
Disruptor<NetworkEvent> disruptor = new Disruptor<>(NetworkEvent::new, 2048, Executors.newSingleThreadedExecutor());
在Kotlin中,我尝试以下等效方法:
val disruptor = Disruptor<NetworkEvent>({ NetworkEvent() }, 2048, Executors.newSingleThreadExecutor())
但是我遇到了这个错误:

lambda - 与Kotlin一起使用的LMAX Disruptor:不能使用lambda吗?-LMLPHP

最佳答案

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

其次,错误消息说出了什么问题,
Disruptor想要一个EventFactory,但是您将其传递给一个简单的lambda。

如果要将lambda作为SAM接口(interface)传递,则有时需要在lambda之前加上接口(interface)名称。

尝试以下(未试用):

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

08-26 05:04