不兼容的类型:java.lang.Object 无法转换为 java.lang.String
Posted
技术标签:
【中文标题】不兼容的类型:java.lang.Object 无法转换为 java.lang.String【英文标题】:incompatible types: java.lang.Object cannot be converted to java.lang.String 【发布时间】:2016-02-23 04:58:26 【问题描述】:我正在尝试通过字符串获取元组的值,但是当我这样做时出现错误提示
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");
这是通过字段名获取元组值的正确方法吗?
【问题讨论】:
您使用的是哪个Tuple
类?
是的,如果返回类型是字符串,它是正确的。您是否在 (String) tuple.getValueByField("name"); 上收到任何错误? ?
【参考方案1】:
使用
tuple.getStringByField("name");
getStringByField
用于根据列名检索值。
Apache storm Documentation
what is use of Tuple.getStringByField(“ABC”) in Storm
【讨论】:
【参考方案2】:尝试改用 getStringByField
如果你想使用 getValueByField 那么你需要检查 if (obj instanceof String) 然后投射它
【讨论】:
【参考方案3】:是的,如果返回类型是字符串,则正确。
String field = (String) tuple.getValueByField("name");
参考示例
http://www.programcreek.com/java-api-examples/index.php?class=backtype.storm.tuple.Tuple&method=getValueByField
【讨论】:
【参考方案4】:试试这个……
String field = String.valueOf(tuple.getValueByField("name"));
而不是
String field = (String) tuple.getValueByField("name");
【讨论】:
以上是关于不兼容的类型:java.lang.Object 无法转换为 java.lang.String的主要内容,如果未能解决你的问题,请参考以下文章
解决Cannot deserialize instance of `java.util.ArrayList<java.lang.Object>` out of VALUE_STRING
Eclipse 中的 Java 项目:无法解析 java.lang.Object 类型。它是从所需的 .class 文件中间接引用的
xamarin android如何将Java.Lang.Object类型转成C#类型
java编程中基本数据类型是8个,那引用数据类型是接口,数组,String还有啥,有Object么?
Spring Arangodb 存储边缘但因 MappingException 失败:找不到类型类 java.lang.Object 的 PersistentEntity