HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <h2>Ответы</h2>
1 <h2>Ответы</h2>
2 <p>Для того чтобы сделать класс immutable в Java, нужно выполнить следующие шаги:</p>
2 <p>Для того чтобы сделать класс immutable в Java, нужно выполнить следующие шаги:</p>
3 <ol><li>Сделать все поля класса final. Это запретит изменение значений этих полей после создания объекта.</li>
3 <ol><li>Сделать все поля класса final. Это запретит изменение значений этих полей после создания объекта.</li>
4 <li>Удалить все сеттеры для полей класса.</li>
4 <li>Удалить все сеттеры для полей класса.</li>
5 <li>Если класс содержит изменяемые объекты, то следует создать копии этих объектов в конструкторе и вернуть их через геттеры. Это защитит от изменения объектов извне.</li>
5 <li>Если класс содержит изменяемые объекты, то следует создать копии этих объектов в конструкторе и вернуть их через геттеры. Это защитит от изменения объектов извне.</li>
6 <li>При создании объекта необходимо инициализировать все поля. Это можно сделать через конструктор, или же если все поля имеют значения по умолчанию, то можно использовать блок инициализации.</li>
6 <li>При создании объекта необходимо инициализировать все поля. Это можно сделать через конструктор, или же если все поля имеют значения по умолчанию, то можно использовать блок инициализации.</li>
7 <li>Не допускайте наследования от вашего класса. Можно либо объявить класс final, либо сделать все его конструкторы приватными, чтобы нельзя было создать наследников.</li>
7 <li>Не допускайте наследования от вашего класса. Можно либо объявить класс final, либо сделать все его конструкторы приватными, чтобы нельзя было создать наследников.</li>
8 </ol><p>Пример:</p>
8 </ol><p>Пример:</p>
9 <ul><li>В данном примере класс содержит три поля: id, name и numbers. Все они помечены как final.</li>
9 <ul><li>В данном примере класс содержит три поля: id, name и numbers. Все они помечены как final.</li>
10 <li>В конструкторе происходит копирование объекта numbers, чтобы сохранить его неизменным.</li>
10 <li>В конструкторе происходит копирование объекта numbers, чтобы сохранить его неизменным.</li>
11 <li>Геттеры возвращают копии полей для предотвращения изменения объекта извне.</li>
11 <li>Геттеры возвращают копии полей для предотвращения изменения объекта извне.</li>
12 <li>Класс объявлен как final, чтобы запретить наследование от него.</li>
12 <li>Класс объявлен как final, чтобы запретить наследование от него.</li>
13 </ul>
13 </ul>