You need to read the documentation for
List#add() which explains it. Also the
Collections#unmodifiableList(java.util.List) method.
The return value is specifically designed not to allow additions or removals from the List. So it throws Exceptions if you try to use the unimplemented methods.
If the original List changes, the "unmodifiable" copy changes to match, however.