Java 转换器不接受消息作为输入
我刚刚开始将我们用于项目的JavaDSL从Java7迁移到Java8,我面临着一些奇怪的问题。我有一个用于Java 转换器不接受消息作为输入,java,spring,spring-integration,Java,Spring,Spring Integration,我刚刚开始将我们用于项目的JavaDSL从Java7迁移到Java8,我面临着一些奇怪的问题。我有一个用于ExpressionEvaluationRequestHandlerAdvice的成功频道,该频道需要AdviceMessage。在Java 7版本中,它可以很好地使用: .transform(new GenericTransformer<AdviceMessage, Message<?>>() { @Override public Message&l
ExpressionEvaluationRequestHandlerAdvice
的成功频道,该频道需要AdviceMessage
。在Java 7版本中,它可以很好地使用:
.transform(new GenericTransformer<AdviceMessage, Message<?>>() {
@Override
public Message<?> transform(AdviceMessage source) {
return source.getInputMessage();
}
})
.transform(新的GenericTransformer转换(AdviceMessage源){
返回source.getInputMessage();
}
})
但当我将其转换为Java 8时:
.<AdviceMessage, Message<?>>transform(advice -> advice.getInputMessage())
基因擦除的问题。因为它只会变成一个对象
,所以我们别无选择,除非尝试只从消息中提取负载
,因为这是最常见的用例
要解决您的问题,您必须使用重载.transform()
版本,并将adviceMasage.class
作为第一个参数
这样,我们就知道了预期的类型,并且可以使用正确的参数调用进行方法调用