Как сделать класс immutable java
Ответы
Иван Полежаев
14 апреля 2023
Для того чтобы сделать класс immutable
в Java
, нужно выполнить следующие шаги:
- Сделать все поля класса
final
. Это запретит изменение значений этих полей после создания объекта. - Удалить все сеттеры для полей класса.
- Если класс содержит изменяемые объекты, то следует создать копии этих объектов в конструкторе и вернуть их через геттеры. Это защитит от изменения объектов извне.
- При создании объекта необходимо инициализировать все поля. Это можно сделать через конструктор, или же если все поля имеют значения по умолчанию, то можно использовать блок инициализации.
- Не допускайте наследования от вашего класса. Можно либо объявить класс
final
, либо сделать все его конструкторы приватными, чтобы нельзя было создать наследников.
Пример:
public final class ImmutableClass {
private final int id;
private final String name;
private final List<Integer> numbers;
public ImmutableClass(int id, String name, List<Integer> numbers) {
this.id = id;
this.name = name;
this.numbers = new ArrayList<>(numbers);
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public List<Integer> getNumbers() {
return new ArrayList<>(numbers);
}
}
- В данном примере класс содержит три поля:
id
,name
иnumbers
. Все они помечены какfinal
. - В конструкторе происходит копирование объекта
numbers
, чтобы сохранить его неизменным. - Геттеры возвращают копии полей для предотвращения изменения объекта извне.
- Класс объявлен как
final
, чтобы запретить наследование от него.
0
0