Storm - 类使用下一个螺栓中的参数时抛出异常

时间:2015-09-23 06:50:23

标签: java apache-kafka classcastexception apache-storm

int flag = Integer.parseInt((String) arg0.getValueByField(Constants.FLAG));

这里,In Storm arg0.getValueByField(String)返回一个对象类型。在这种情况下,它实际上是一个整数。但是为了在下一个螺栓中得到这个值作为一个整数,我写了上面的代码行。但它正在给出类强制转换异常。你能告诉我它有什么问题(铸造或什么?)。之后我甚至试过这个:

int flag = Integer.parseInt(arg0.getValueByField(Constants.FLAG).toString());

但仍然是同样的例外。

2 个答案:

答案 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


}