Java 使用HashMap转换字符串、整数、双精度的Bug

Java 使用HashMap转换字符串、整数、双精度的Bug,java,android,hashmap,Java,Android,Hashmap,我在安卓2.3和更低版本上有一些奇怪的bug 我有以下代码: HashMap<Somekey, Object> data = new HashMap<Somekey, Object>(); data.put(somekey, "asdfdsafdsf"); String value = (String) data.get(somekey); HashMap data=newhashmap(); data.put(somekey,“asdfdsf”); String va

我在安卓2.3和更低版本上有一些奇怪的bug

我有以下代码:

HashMap<Somekey, Object> data = new HashMap<Somekey, Object>();
data.put(somekey, "asdfdsafdsf");
String value = (String) data.get(somekey);
HashMap data=newhashmap();
data.put(somekey,“asdfdsf”);
String value=(String)data.get(somekey);
在最后一行我有ClassCastException:get(somekey)返回布尔值而不是字符串。此错误不仅出现在字符串类型中,还出现在Integer和Double类型中


我不明白为什么,因为这段代码在android 4.0.3及更高版本上正常工作。

即使您的代码运行(???)您的代码是错误的,您应该修复它。可能在铸造前通过instanceof检查类型

你也可以用肮脏的方式:

String value = data.get(somekey).toString();

即使你的代码正在运行(???),你的代码是错误的,你应该修复它。可能在铸造前通过instanceof检查类型

你也可以用肮脏的方式:

String value = data.get(somekey).toString();
那么你没有在地图上放任何布尔/布尔?因为
Somekey
可能有一个错误的
hashCode()
实现,可能是所有相同的代码,而早期的HashMap实现可能有缺陷

纯上述代码,没有任何布尔值,无法传递该错误。

那么您没有在映射中添加任何布尔值/布尔值?因为
Somekey
可能有一个错误的
hashCode()
实现,可能是所有相同的代码,而早期的HashMap实现可能有缺陷


纯上述代码(没有任何布尔值)无法传递该错误。

我已经尝试了您的代码,它可以工作:

Somekey somekey = new Somekey();
HashMap<Somekey, Object> data = new HashMap<Somekey, Object>();
data.put(somekey, "asdfdsafdsf");
String value = (String) data.get(somekey);

我已经尝试了你的代码,它可以工作:

Somekey somekey = new Somekey();
HashMap<Somekey, Object> data = new HashMap<Somekey, Object>();
data.put(somekey, "asdfdsafdsf");
String value = (String) data.get(somekey);

谢谢你的回答,解决了谢谢你的回答,解决了