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>