例如,在Java中,我可以使用LMAX干扰器来做到这一点: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接口(interface)传递,则有时需要在lambda之前加上接口(interface)名称。
尝试以下(未试用):
val disruptor = Disruptor(EventFactory { NetworkEvent()}, 2048,....)