Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Collections.unmodifiableList()

Возвращает представление списка, которое нельзя изменить.

Доступно с: Java 1.2

Синтаксис

static <T> List<T> unmodifiableList(List<? extends T> list)

Параметры

ПараметрТипОписание
listList<? extends T>Список, который нужно закрыть от изменений.

Возвращаемое значение

List<T>Представление только для чтения.

Примеры

Изменять через обёртку нельзя, но изменения оригинала видны:

void main() {
    List<String> source = new ArrayList<>(List.of("a", "b"));
    List<String> readOnly = Collections.unmodifiableList(source);
    try {
        readOnly.add("c");
    } catch (UnsupportedOperationException e) {
        IO.println("read-only");
    }
    source.add("c");
    IO.println(readOnly);
}

Результат:

read-only
[a, b, c]

Примечания

Это не копия, а «окно» только для чтения: исходный список по-прежнему можно менять, и изменения видны через обёртку. Если нужна независимая неизменяемая копия, используйте List.copyOf(). Аналоги для других коллекций: unmodifiableSet(), unmodifiableMap().

См. также

  • List.copyOf() — Создаёт неизменяемую копию коллекции в виде списка.
  • List.of() — Создаёт неизменяемый список из перечисленных элементов.
  • UnsupportedOperationException — Возникает при вызове операции, которую объект не поддерживает, — например, изменение неизменяемой коллекции.

Вопросы и ответы по теме

В учебнике

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.