0

运行我的代码会导致以下错误: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

4 回答 4

5

Map的 s 持有 type 的值Object,这意味着它们可以真正持有任何值(因为一切都 extends Object);不能保证给定的值将是 a String。由于您的错误,您的一张地图中的一个值似乎是 a Integer,显然不能转换为 a String。快速修复是使用toString

record.get("level").toString().equals("1")

但请注意,这对于任何toString返回的对象都将产生 true "1",而不仅仅是字符串。如果您只想检查与字符串 "1"的相等性,那么您可以使用"1".equals(...),因为equals可以将任何对象作为参数。

于 2013-06-26T18:33:12.590 回答
2

尝试

Object number = record.get("level");
if("1".equals(number)){

}
于 2013-06-26T18:29:30.657 回答
0

尝试其中一种选择:

rootList.add(记录 + "");

或者

rootList.add(新字符串(记录));

于 2013-06-26T18:29:50.433 回答
0

好吧,如果Map值是Integers,那么toString()应该可以将它们转换为字符串:

for(Map<String, Object> record: list) {
    if(record.get("level").toString().equals("1")) {
        rootList.add(record);
    }
}
于 2013-06-26T18:31:01.360 回答