Dalla documentazione di Java 1.6 Collection Framework :
Collezioni che non supportano alcuna operazione di modifica (quali
add
,remove
eclear
) sono indicati come immodificabile . [...] Le collezioni che garantiscono inoltre che nessun cambiamento nell'oggetto Collection sarà mai visibile sono indicate come immutabili .
Il secondo criterio mi confonde un po '. Dato che la prima raccolta non è modificabile e supponendo che il riferimento alla raccolta originale sia stato eliminato, quali sono le modifiche a cui si fa riferimento nella seconda riga? Si riferisce ai cambiamenti negli elementi contenuti nella collezione, cioè allo stato degli elementi?
Seconda domanda:
affinché una collezione sia immutabile, come si fa a fornire le garanzie aggiuntive specificate? Se lo stato di un elemento nella raccolta viene aggiornato da un thread, è sufficiente per l'immutabilità che quegli aggiornamenti nello stato non siano visibili sul thread che contiene la raccolta immutabile?
Affinché una collezione sia immutabile, come si fa a fornire le garanzie aggiuntive specificate?
newCol = oldCol.add("element")
produrrà una nuova raccolta che è una copia di quella vecchia con 1 elemento in più e tutti i riferimenti aoldCol
punteranno ancora alla stessa vecchia raccolta invariata.