将java lambda转换为java 1.8之前的函数

将java lambda转换为java 1.8之前的函数,java,lambda,java-8,Java,Lambda,Java 8,我正在使用Babbler编写一个XMPP软客户端来进行负载测试 在API文档中,它提到添加侦听器以拦截传入消息。但是,示例代码是以lambda形式编写的 // Listen for messages xmppClient.addInboundMessageListener(e -> { Message message = e.getMessage(); // Handle inbound message. }); 我需要帮助将其转换为Java 1.7函数,因为我们的负载生

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

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

// Listen for messages
xmppClient.addInboundMessageListener(e -> {
    Message message = e.getMessage();
    // Handle inbound message.
});
我需要帮助将其转换为Java 1.7函数,因为我们的负载生成工具(nGrinder)不支持lambda语法。

//侦听消息
// Listen for messages
xmppClient.addInboundMessageListener(new Consumer<MessageEvent>() {

    public void accept(MessageEvent e) { 
        Message message = e.getMessage();
        // Handle inbound message.
    }
});
xmppClient.addInboundMessageListener(新消费者(){ 公共无效接受(MessageEvent e){ Message Message=e.getMessage(); //处理入站消息。 } });
通过将某个lambda函数存储在实例变量中,还可以避免每次调用该函数时创建新的使用者实例

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);
}
私人消费者内置MessageListener;
//应仅在启动期间调用
公共无效初始化(){
inboundMessageListener=新消费者(){
公共无效接受(MessageEvent e){
Message Message=e.getMessage();
//处理入站消息。
}
};
}
//可以为多个XMPP客户机重用,前提是处理不同的客户机没有区别
public void addInboundMessageListener(){
xmppClient.addInboundMessageListener(inboundMessageListener);
}

这样的lambda只是[功能]接口匿名实现的简写。您始终可以自己实施“漫长的道路”:

//侦听消息
xmppClient.addInboundMessageListener(新消费者(){
@凌驾
公共无效接受(MessageEvent e){
Message Message=e.getMessage();
//处理入站消息。
}
});

阅读此平台提供的文档。有很好的参考价值。谢谢你。一旦我自由了,我会花时间把整个事情做完。同时,我需要一个快速而简练的解决方案。谢谢这正是我所需要的。添加实例变量注释非常有用,如果我接收到很多事件,它会加快速度。@jeffsia:这不会加快任何速度。接收事件时执行的代码完全相同。@霍尔格当然不会每次都调用
initialize()
方法。这个片段只是一个示例。@Julio D:现在它更有意义了,尽管像这样的场景不太可能出现。请注意,这是如何将OP弄糊涂的,而它只是在多次将侦听器注册到源代码时才起作用。@Holger指出,这其实并不重要,因为我只想在一些测试中使用该代码段,而不考虑性能。
// Listen for messages
xmppClient.addInboundMessageListener(new Consumer<MessageEvent>() {
    @Override
    public void accept(MessageEvent e) {
        Message message = e.getMessage();
        // Handle inbound message.
    }
});