0

按照代码块。

Map<String, Object> personDetailMap = new HashMap<String, Object>();
personDetailMap.put("name", "isuru");
personDetailMap.put("is-male", true);
(String)personDetailMap.get("is-male");

最终语句导致异常:ClassCastException cannot cast Boolean to String 另请注意,我尝试读取的值是原始类型 boolean

我的问题是 personDetailMap 将返回一个 Class Object 的对象,那么为什么它会给 String 一个 Boolean 强制转换异常。

4

1 回答 1

3

personDetailMap.put("is-male", true);Boolean通过将原语装箱boolean到对象中 来存储 a 。personDetailMap.get("is-male");返回相同Boolean的 .

然后您尝试将其Boolean转换为 aString尽管这两个类没有关系。演员表失败了,你得到了那个例外。

该语句(String) anObject;只有在anObject 一个字符串时才有效(字符串是最终的,没有任何子类)。

如果您确实想将布尔值转换为字符串,可以使用以下方法:

String boolStr = personDetailMap.get("is-male").toString(); // boolStr = "true"
于 2012-05-31T11:46:31.647 回答