不兼容的类型:java.lang.object无法转换为java.lang.string

xxe27gdn  于 2021-06-21  发布在  Storm
关注(0)|答案(4)|浏览(2183)

我试图通过字符串得到元组的值,但是当我这样做的时候得到一个错误

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");

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

8i9zcol2

8i9zcol21#

是的,如果返回类型是string,则它是正确的。

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

参考示例
http://www.programcreek.com/java-api-examples/index.php?class=backtype.storm.tuple.tuple&method=getvaluebyfield

uurity8g

uurity8g2#

尝试改用getstringbyfield
如果您想使用getvaluebyfield,那么您需要检查是否(obj instanceof string)然后强制转换它

wlwcrazw

wlwcrazw3#

试试这个。。。

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

而不是

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

5vf7fwbs4#

使用

tuple.getStringByField("name");
``` `getStringByField` 用于根据列名检索值。
apache storm文档
tuple.getstringbyfield(“”)在storm中有什么用

相关问题