我正在使用Babbler编写XMPP软客户端来进行负载测试。

在API文档Babbler documentation中,它提到了添加侦听器以拦截传入的消息。但是,示例代码是以lambda形式编写的。

// Listen for messages
xmppClient.addInboundMessageListener(e -> {
    Message message = e.getMessage();
    // Handle inbound message.
});

由于我们的负载生成工具(nGrinder)不支持lambda语法,因此需要将其转换为Java 1.7函数的帮助。

最佳答案

// Listen for messages
xmppClient.addInboundMessageListener(new Consumer<MessageEvent>() {

    public void accept(MessageEvent e) {
        Message message = e.getMessage();
        // Handle inbound message.
    }
});

您还可以避免每次调用某个lambda函数时都将其存储在实例变量中来创建新的Consumer实例。
private Consumer<MessageEvent> inboundMessageListener;

//should be called during startup only
public void initialize() {
    inboundMessageListener = new Consumer<MessageEvent>() {

        public void accept(MessageEvent e) {
            Message message = e.getMessage();
            // Handle inbound message.
        }
    };
}

//can be reused for more than one XMPP client, assuming there's no difference in handling different clients
public void addInboundMessageListener() {

    xmppClient.addInboundMessageListener(inboundMessageListener);
}

10-06 11:15