Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 转换器不接受消息作为输入_Java_Spring_Spring Integration - Fatal编程技术网

Java 转换器不接受消息作为输入

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

我刚刚开始将我们用于项目的JavaDSL从Java7迁移到Java8,我面临着一些奇怪的问题。我有一个用于
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
作为第一个参数

这样,我们就知道了预期的类型,并且可以使用正确的参数调用进行方法调用