0
使用ConcurrentHashMap
和androids parcel机制时遇到了一些奇怪的行为。尝试拆开ConcurrentHashMap时出现ClassCastException
我的情况是,我有一个ConcurrentHashMap,它在某个点上是分组的。
ConcurrentHashMap<String, CustomClass> concurrentMap = new ConcurrentHashMap<>();
...
@Override
public void writeToParcel (Parcel dest, int flags) {
Bundle map = new Bundle(1);
map.putSerializable("map", concurrentMap);
dest.writeBundle(map);
}
我找回以后这样的:
public void readFromParcel (Parcel in) {
Bundle map = in.readBundle(CustomClass.class.getClassLoader());
concurrentMap = (ConcurrentHashMap<String, CustomClass>) map.getSerializable("map");
}
的ClassCastException异常发生在我被它序列化到一个包,然后写捆包裹做到这一点的推荐方式尝试将检索到的地图转换回ConcurrentHashMap
时的最后一行。 由于HashMap和ConcurrentHashMap
都实现了Serializable
接口并且扩展了AbstractMap
我不太了解这个问题。
有人也经历过这种情况,或者可以解释这个问题吗?
你的自定义类还应该实现可串行化接口 – 2015-02-09 11:29:10
自定义类实现了Parcelable。我忘了提及的是,如果我将concurrentMap的类型更改为HashMap,它就可以工作。 – JimmyVanBraun 2015-02-09 11:37:02