À partir de la documentation de Java 1.6 Collection Framework :
Les collections qui ne prennent en charge aucune opération de modification (comme
add
,remove
etclear
) sont appelées non modifiables . [...] Les collections qui garantissent en outre qu'aucun changement dans l'objet Collection ne sera jamais visible sont appelées immuables .
Le deuxième critère me déroute un peu. Étant donné que la première collection n'est pas modifiable, et en supposant que la référence de collection d'origine a été supprimée, quels sont les changements auxquels il est fait référence dans la deuxième ligne? Se réfère-t-il aux changements des éléments contenus dans la collection, c'est-à-dire à l'état des éléments?
Deuxième question:
pour qu'une collection soit immuable, comment faire pour fournir les garanties supplémentaires spécifiées? Si l'état d'un élément de la collection est mis à jour par un thread, est-il suffisant pour l'immuabilité que ces mises à jour de l'état ne soient pas visibles sur le thread contenant la collection immuable?
Pour qu'une collection soit immuable, comment procède-t-on pour fournir les garanties supplémentaires spécifiées?
newCol = oldCol.add("element")
produira une nouvelle collection qui est une copie de l'ancienne avec 1 élément supplémentaire, et toutes les références à laoldCol
pointeront toujours vers la même ancienne collection inchangée.