不兼容的类型:java.lang.Object无法转换为java.lang.String

时间:2016-02-23 04:58:26

标签: java collections apache-storm bigdata

我正在尝试通过字符串获取元组的值,但是当我这样做时会收到错误

 incompatible types: java.lang.Object cannot be converted to java.lang.String

这就是我的尝试方式。

 `  public void execute(Tuple tuple) {
  String field = tuple.getValueByField("name");

        for(String user:field.split(","))}`

我通过投射字符串

尝试了这样的方法
String field = (String) tuple.getValueByField("name"); 

这是通过字段名称获取元组值的正确方法吗?

4 个答案:

答案 0 :(得分:2)

使用

tuple.getStringByField("name");

getStringByField用于根据列名检索值。

Apache storm Documentation

what is use of Tuple.getStringByField(“ABC”) in Storm

答案 1 :(得分:1)

尝试使用getStringByField代替

如果你想使用getValueByField,那么你需要检查 if(obj instanceof String) 然后施展它

答案 2 :(得分:1)

是的,如果返回类型是字符串,那是正确的。

String field = (String) tuple.getValueByField("name"); 

参见示例以供参考

http://www.programcreek.com/java-api-examples/index.php?class=backtype.storm.tuple.Tuple&method=getValueByField

答案 3 :(得分:-1)

试试这个......

String field = String.valueOf(tuple.getValueByField("name")); 

而不是

String field = (String) tuple.getValueByField("name");