[英]Storm - Class Cast Exception while using the parameter in next bolt
int flag = Integer.parseInt((String) arg0.getValueByField(Constants.FLAG));
在这里,在Storm中, arg0.getValueByField(String)
返回对象类型。 在这种情况下,它实际上是一个整数。 但是,为了在下一个整数中获得此值作为整数,我编写了上面的代码行。 但这给了类强制转换异常。 您能否提出它的问题是什么(铸件或什么?)。 在那之后我什至尝试过:
int flag = Integer.parseInt(arg0.getValueByField(Constants.FLAG).toString());
但是还是一样。
如果arg0.getValueByField(Constants.FLAG)
返回的值是Integer
类型,则无法像执行此操作一样将其arg0.getValueByField(Constants.FLAG)
为String
。
简单地使用强制转换为Integer
:
int flag = (Integer)arg0.getValueByField(Constants.FLAG);
找到您在元组上收到的任何内容,然后进行更改,然后更改处理它的逻辑...
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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.