Java 使用HashMap转换字符串、整数、双精度的Bug
我在安卓2.3和更低版本上有一些奇怪的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
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);
谢谢你的回答,解决了谢谢你的回答,解决了