Int不能在运行时转换为String问题

时间:2013-06-26 18:26:59

标签: java

运行我的代码会导致以下错误: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的新手(我也没有写过这段代码)所以请原谅我,如果这是一个愚蠢的错误。

4 个答案:

答案 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);
    }
}