繁体   English   中英

Storm-在下一个螺栓中使用参数时发生类强制转换异常

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM