int flag = Integer.parseInt((String) arg0.getValueByField(Constants.FLAG));
这里,In Storm arg0.getValueByField(String)
返回一个对象类型。在这种情况下,它实际上是一个整数。但是为了在下一个螺栓中得到这个值作为一个整数,我写了上面的代码行。但它正在给出类强制转换异常。你能告诉我它有什么问题(铸造或什么?)。之后我甚至试过这个:
int flag = Integer.parseInt(arg0.getValueByField(Constants.FLAG).toString());
但仍然是同样的例外。
答案 0 :(得分:0)
如果arg0.getValueByField(Constants.FLAG)
返回的值属于Integer
类型,则无法像String
那样将其投射到Integer
。
简单地使用强制转换为int flag = (Integer)arg0.getValueByField(Constants.FLAG);
:
{{1}}
答案 1 :(得分:0)
找到你在元组上收到的任何内容,然后更改然后更改逻辑以处理它......
public void execute(Tuple input) {
Object obj = input.getValueByField(Constants.FLAG);
int flag;
if (obj instanceof Integer){
//
flag = (Integer) obj;
}
else if (obj instanceof String){
flag = Integer.parseInt((String) obj);
}
else // you are receiving something else that is neither an integer or String
{
throw new RuntimeException("other class type : "+obj.getClass()
+"\t toString(): "+obj.toString());
// your should be able to see this exception on Storm UI
}
// do your thing
}