运行我的代码会导致以下错误:java.lang.Integer cannot be cast to java.lang.String
这就是我所拥有的:
for(Map<String, Object> record: list) {
if(((String)record.get("level")).equals("1")) {
rootList.add(record);
}
}
我尝试使用toString将这个小片段转换为Int,但它只是给我一个编译错误。我是java的新手(我也没有写过这段代码)所以请原谅我,如果这是一个愚蠢的错误。
答案 0 :(得分:5)
您的Map
拥有Object
类型的值,这意味着它们可以将任何内容保存为值(因为所有内容都延伸Object
);不能保证给定的值是String
。根据您的错误,您的某个地图中的某个值似乎是Integer
,显然无法转换为String
。快速解决方法是使用toString
:
record.get("level").toString().equals("1")
但请注意,对于toString
返回"1"
的任何对象,这将产生真实,而不仅仅是字符串。如果您只想检查与字符串 "1"
的相等性,那么您可以使用"1".equals(...)
,因为equals
可以将任何对象作为参数。
答案 1 :(得分:2)
尝试
Object number = record.get("level");
if("1".equals(number)){
}
答案 2 :(得分:0)
尝试以下方法之一:
rootList.add(record +“”);
或
rootList.add(new String(record));
答案 3 :(得分:0)
好吧,如果Map
值是Integer
s,那么toString()
应该可以将它们转换为字符串:
for(Map<String, Object> record: list) {
if(record.get("level").toString().equals("1")) {
rootList.add(record);
}
}