Java 值为Object类型的映射中的强制转换异常问题

Java 值为Object类型的映射中的强制转换异常问题,java,string,map,boolean,classcastexception,Java,String,Map,Boolean,Classcastexception,遵循代码块 Map<String, Object> personDetailMap = new HashMap<String, Object>(); personDetailMap.put("name", "isuru"); personDetailMap.put("is-male", true); (String)personDetailMap.get("is-male"); Map personDetailMap=newhashmap(); personDetail

遵循代码块

Map<String, Object> personDetailMap = new HashMap<String, Object>();
personDetailMap.put("name", "isuru");
personDetailMap.put("is-male", true);
(String)personDetailMap.get("is-male");
Map personDetailMap=newhashmap();
personDetailMap.put(“name”,“isuru”);
personDetailMap.put(“是男性”,true);
(String)personDetailMap.get(“是男性”);
Final语句导致异常:ClassCastException无法将布尔值强制转换为字符串 还要注意,我试图读取的值是作为基元类型boolean放置的

我的问题是personDetailMap将返回一个类object的对象,那么为什么它会给String一个布尔型强制转换异常。

personDetailMap.put(“is male”,true)
通过将基本体
布尔值
装箱到对象中来存储
布尔值
personDetailMap.get(“是男性”)
返回相同的
布尔值

然后尝试将
布尔值
转换为
字符串
,尽管这两个类没有关系。强制转换失败,您将获得该异常

语句
(字符串)是一个对象一个对象
是一个字符串(字符串是最终的,没有任何子类)时,code>才能工作

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

String boolStr = personDetailMap.get("is-male").toString(); // boolStr = "true"
personDetailMap.put(“是男性”,true)
通过将基本体
布尔值
装箱到对象中来存储
布尔值
personDetailMap.get(“是男性”)
返回相同的
布尔值

然后尝试将
布尔值
转换为
字符串
,尽管这两个类没有关系。强制转换失败,您将获得该异常

语句
(字符串)是一个对象一个对象
是一个字符串(字符串是最终的,没有任何子类)时,code>才能工作

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

String boolStr = personDetailMap.get("is-male").toString(); // boolStr = "true"

你想实现什么?像这样的“异构”映射,即使你能让它们在技术上工作,通常被认为是你最好避免的代码气味。你想实现什么?像这样的“异构”映射,即使你能让它们在技术上工作,通常被认为是您最好避免的代码气味。或者您可以使用字符串boolStr=personDetailMap.get(“is-male”)+“”;或者可以使用字符串boolStr=personDetailMap.get(“is-male”)+;