2
我試圖通過lambda表達式創建郵件過濾器頭價值評估如何在Spring集成Java DSL中創建MessageSelector過濾器?
IntegrationFlows.from(inputChannel())
.filter((Message<?> m) -> { return m.getHeaders().get(...)...; })
.transform(...)
.channel(outputChannel())
.get();
的基礎上過濾消息,但得到的異常
Caused by: java.lang.ClassCastException: com.<...skipped...>.BusinessPayloadData cannot be cast to org.springframework.messaging.Message
僅限於此定義爲我的作品
IntegrationFlows.from(inputChannel())
.filter(new MessageSelector(){
@Override
public boolean accept(Message<?>message){
return ...;
}
})
.transform(...)
.channel(outputChannel())
.get();
是否可以通過lambda表達式創建MessageSelector
實例?
您假設Lambda的類型與匿名類相同,但它可能不是您的想法。當我遇到這樣的問題時,我經常使用的一種技術是使用我的IDE的重構工具將lambda提取到單獨的變量中,並查看變量聲明中分配給它的類型。如果它與我所期望的不同,我修改該類型,然後使用IDE的重構工具將lambda內聯到原始表達式中。我發現它會填充我不知道添加的類型轉換和其他泛型類型分類器。 –
@HankD當然。我也喜歡你說。但是,這是更具體的'filter'實現的更復雜的情況。 –