我正在使用Babbler编写一个XMPP软客户端来进行负载测试。
在API文档Babbler documentation中,它提到添加侦听器以拦截传入的消息。但是,示例代码是以lambda格式编写的。
// Listen for messages
xmppClient.addInboundMessageListener(e -> {
Message message = e.getMessage();
// Handle inbound message.
});
我需要帮助将其转换为Java 1.7函数,因为我们的加载生成工具(nGrinder)不支持lambda语法。
答案 0 :(得分:4)
这样的lambda只是匿名实现[functional]接口的简写。您可以随时自己实施#34;漫长的方式":
Sub test()
Dim S1$, k1, k2
S1 = "Product ID: 35, Product Qty: 2, Product SKU: Brush, Product Name: Brush, Product Weight: 80.0000, Product Variation Details: , Product Unit Price: 5.00, Product Total Price: 10.00|Product ID: 54, Product Qty: 5, Product SKU: Comb, Product Name: Comb, Product Weight: 1.3000, Product Variation Details: , Product Unit Price: 1.00, Product Total Price: 5.00"
For Each k1 In Split(S1, "|")
For Each k2 In Split(k1, ",")
If UCase(k2) Like "*ID*" Or _
UCase(k2) Like "*QTY*" Or _
UCase(k2) Like "*PRICE*" Then
Debug.Print k2
End If
Next k2, k1
End Sub
答案 1 :(得分:1)
// Listen for messages
xmppClient.addInboundMessageListener(new Consumer<MessageEvent>() {
public void accept(MessageEvent e) {
Message message = e.getMessage();
// Handle inbound message.
}
});
每次通过将某个lambda函数存储在实例变量中来调用某个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);
}