Мы знаем, что новый JMM дает гарантии того, что не видел частично сконструированный объект или более одного значения его окончательных полей. http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.5.2Сериализация, клонирование и заключительные гарантии (неизменность)
Мой вопрос -
такие же окончательные гарантии применимы, когда мы десериализации неизменяемого объекта (все поля, объявленные как окончательные)?
http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.5.3
(ДОПОЛНЕНО)
http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6379948 (Bug для десериализации)
ли одинаковые окончательные гарантии применимы, когда мы клон неизменный объект (все поля объявлены как окончательный) ?
По крайней мере, для клонирования это, безусловно, * да *. –
после небольшой мысли, я думаю, что клонирование неизменяемого объекта не решит никакой цели. Не было бы никакого сценария, где мне нужно было бы клонировать неизменяемый объект. Я прав в своем предположении? – veritas
Существуют некоторые предельные сценарии, в которых вы действительно хотите отдельный объект. У меня была одна операция условного атомного свопа, где единственный способ точно знать, что произошел обмен, - это иметь новый, отличный объект, который вы меняете. –