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

Storm - Class Cast Exception while using the parameter in next bolt

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

这里,在Storm中arg0.getValueByField(String) returns一个对象类型。在这种情况下,它实际上是一个整数。但是为了在下一个螺栓中将此值作为整数获取,我编写了上面的代码行。但它给出了 class 转换异常。你能建议它有什么问题吗(铸造或什么?)。之后我什至尝试过这个:

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

但还是一样的异常。

如果 arg0.getValueByField(Constants.FLAG) 返回的值是 Integer 类型,您不能将其转换为 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


}