Sobes.tech
Senior
56

Daxili siyahının xarici istinad vasitəsilə mutasiyalarından necə qorunmaq olar (konstruktorda müdafiə nüsxəsi)?

Şirkətlər soruşuldu
РТЛабс

AI-dan cavab

sobes.tech Süni İntellekt

Чтобы защититься от мутации внутреннего списка через внешнюю ссылку, в конструкторе нужно создать защитную копию (defensive copy) перед сохранением списка в поле класса. Это значит, что вместо сохранения ссылки на переданный список, создаётся новый список с теми же элементами. Таким образом, изменения внешнего списка после создания объекта не повлияют на внутреннее состояние объекта.

Пример на Java:

public class MyClass {
    private final List<String> internalList;

    public MyClass(List<String> inputList) {
        // Создаем копию списка, чтобы защититься от внешних изменений
        this.internalList = new ArrayList<>(inputList);
    }

    public List<String> getList() {
        // Можно также возвращать копию, чтобы защититься от изменений извне
        return new ArrayList<>(internalList);
    }
}

Таким образом, любые изменения, сделанные снаружи на inputList после создания объекта, не повлияют на internalList внутри объекта.