Из документации Java 1.6 Collection Framework :
Коллекции, которые не поддерживают никаких операций модификации (например,
add
,] remove
иclear
) называются неизменяемыми . [...] Коллекции, которые дополнительно гарантируют, что никакие изменения в объекте Collection никогда не будут видны, называются неизменяемыми .
Второй критерий меня немного смущает.Учитывая, что первая коллекция не может быть изменена и если исходная ссылка на коллекцию удалена, какие изменения упоминаются во второй строке? Относится ли это к изменениям в элементах, содержащихся в коллекции, то есть к состоянию элементов?
Второй вопрос:
Чтобы коллекция была неизменной, как можно предоставить указанные дополнительные гарантии? Если состояние элемента в коллекции обновляется потоком, достаточно ли для неизменяемости, чтобы эти обновления в состоянии не были видны в потоке, содержащем неизменяемую коллекцию?
Чтобы коллекция была неизменной, как это сделать? пойти о предоставлении указанных дополнительных гарантий?