Collections.unmodifiableList
просто возвращает неизменяемую оболочку; он не копирует содержимое списка ввода.
В его Javadoc это достаточно ясно сказано:
Возвращает неизменяемое представление указанного списка. Этот метод позволяет модулям предоставлять пользователям доступ «только для чтения» к внутренним спискам. Операции запроса в возвращаемом списке, «прочитанные» до указанного списка, и попытки изменить возвращенный список, будь то прямой или через его итератор, приводят к UnsupportedOperationException
.
Как отметил Мэтт Болл, если вам не нужно, чтобы внутренний List
был изменяемым, вы можете просто сохранить Guava ImmutableList внутри ... вы можете смело передавайте это вызывающим абонентам напрямую, поскольку они никогда не изменятся.