【发布时间】:2016-08-24 10:40:59
【问题描述】:
我是 Esper 的新手,我创建了一个小程序,以 Map 的形式提供 Esper 事件。
我添加了一个侦听器,一切都按预期工作,但是,当在一个时间窗口内执行复杂的查询(如 count(*))时,我很难将结果作为 java.util.Map 取回。无论查询结果如何,我如何才能将结果作为标准 Map 进行进一步处理?
private class EsperUpdateListener implements UpdateListener {
public void update(EventBean[] newEvents, EventBean[] oldEvents) {
System.out.println("Found new event!");
if(newEvents != null) {
System.out.println("newEvents (" + newEvents.length + "):");
for (EventBean e : newEvents) {
System.out.println(" " + e.toString() + "(" + e.getEventType().getName() + ")");
System.out.println(" " + e.getUnderlying().toString());
for (Map.Entry<String,Object> entry : e.getUnderlying().getEntrySet()) {
String key = entry.getKey();
String val = (String)entry.getValue();
System.out.println(" " + key + ": " + val);
}
}
}
if(oldEvents != null) {
System.out.println("oldEvents:");
for (EventBean e : oldEvents) {
System.out.println(" " + e.toString() + "(" + e.getEventType().getName() + ")");
}
}
}
}
我尝试了上面的代码,但它抱怨 getUnderlying 返回一个对象,而不是地图。我尝试了投射,这有点工作,但并非没有警告:
警告:[unchecked] unchecked cast
Map<String,Object> emap = (Map<String,Object>)e.getUnderlying();
【问题讨论】:
标签: esper