Это, вероятно, только вопрос синтаксиса (и моей неспособности его найти;)Как десериализовать synchronizedMap и synchronizedList?
Вот коллекции, чтобы быть (де) сериализуется:
private Map<String, Terminal> terminals = Collections.synchronizedMap(new HashMap<String, Terminal>());
private List<Host> hosts = Collections.synchronizedList(new ArrayList<Host>());
Здесь идет сериализации:
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("blah.dmp"));
out.writeObject(synchronizedMap);
out.writeObject(synchronizedList);
и теперь де-сериализуется, это исключает ClassCastException (очевидно):
terminals = (HashMap<String, Terminal>) in.readObject();
hosts = (ArrayList<Hosts>) in.readObject();
но следующий не будет компилировать (а также manyyyyy другие варианты я пробовал):
terminals = (Collections.synchronizedMap(new HashMap<String, Terminal>())) in.readObject();
hosts = (Collections.synchronizedList(new ArrayList<Host>())) in.readObject();
ха-ха мальчик теперь делать я чувствую себя немым;) Что я хотя нахожу особенно странным, если я изменить свою инициализацию synchronizedMap на регулярной HashMap, мой случай, который вызывает ClassCastException работает отлично. – glenneroo