Eine kurze Memo an mich selbst, da ich es sonst bestimmt wieder vergesse:
Um Listen in Java immutable auszuliefern, ist die Kapselung in einen Hilfs-Decorator nötig.
Selbstverständlich reicht es nie aus, ein Listen-Attribut einfach nur als final zu deklarieren, um die Unveränderlichkeit einer Liste zu erreichen. Schließlich bezieht sich dieses Schlüsselwort nur auf das Attribut, nicht auf den Inhalt.
Dennoch kann man via:
return Collections.unmodifiableList(param);
eine Liste als unmodifiable setzen. Es wird statt der Liste dieser Listen-Decorator herumgereicht.
Sehr sinnvoll ist auch, dass es noch weitere Methoden für andere Mengentypen gibt:
java.util.Collections.unmodifiableCollection( Collections )
java.util.Collections.unmodifiableSortedSet( SortedSet )
java.util.Collections.unmodifiableList(List list)
java.util.Collections.unmodifiableMap(Map m)
java.util.Collections.unmodifiableSortedMap(Sorted Map m)
Sinnvoll ist dies beispielsweise überall, wo man die Liste zwar nach "außen" geben möchte, sie dort aber nicht verändert können werden soll.