Md *_*ain 5 java spring apache-camel
在Apache camel 中,可以通过将其类型传递到exchange.getIn().getBody(Class<T> type). 假设我们想要获取消息正文String,如下所示:
String body = exchange.getIn().getBody(String.class);
Run Code Online (Sandbox Code Playgroud)
在GenericorParameterized类型消息的情况下,我们如何通过它自己的类型而不是传统的对象类型转换来获取对象。这是您实现的伪代码片段:
package com.chorke.hmis.fusion.epoint;
import java.util.ArrayList;
import java.util.HashMap;
import org.apache.camel.Exchange;
import org.springframework.stereotype.Component;
@Component("chorkeProcessor")
public class ChorkeProcessorImpl implements ChorkeProcessor{
@Override
public void process(Exchange exchange) throws Exception {
ArrayList<HashMap<String, Object>> list = null;
list = exchange.getIn().getBody(ArrayList<HashMap<String, Object>>.class);
for (HashMap<String, Object> map : list) {
for (String key : map.keySet()) {
Object value= map.get(key);
//TODO
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我们的期望与示例一样。
它根本无法完成,没有ArrayList<HashMap<String, Object>>.class类,类始终是一个简单的ArrayList.class,这就是 Java 泛型类型的工作方式。你要么必须使用普通的ArrayList:
@Component("chorkeProcessor")
public class ChorkeProcessorImpl implements ChorkeProcessor{
@Override
public void process(Exchange exchange) throws Exception {
ArrayList<HashMap<String, Object>> list = exchange.getIn().getBody(ArrayList.class);
for (HashMap<String, Object> map : list) {
for (String key : map.keySet()) {
Object value= map.get(key);
//TODO
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
或定义并使用您自己的仅扩展类型ArrayList<HashMap<String, Object>>:
// MyListOfMaps.java
public class MyListOfMaps extends ArrayList<HashMap<String, Object>> {
// constructors, additional methods
}
// ChorkeProcessorImpl.java
@Component("chorkeProcessor")
public class ChorkeProcessorImpl implements ChorkeProcessor{
@Override
public void process(Exchange exchange) throws Exception {
MyListOfMaps list = exchange.getIn().getBody(MyListOfMaps.class);
for (HashMap<String, Object> map : list) {
for (String key : map.keySet()) {
Object value= map.get(key);
//TODO
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不自己创建地图列表,则应谨慎使用此方法 - 您可能需要提供适当的转换器
| 归档时间: |
|
| 查看次数: |
7463 次 |
| 最近记录: |