Immutable Class
Что это
Immutable class - класс который невозможно изменить после инициализации. Все Immutable сlass являются
потокобезопасными(thread-safe) и не требуют синхронизации.
Как создать:
- Не создавать 'Setters'.
- Для 'Getters' mutable полей - необходимо возвращать копии объектов.
- Инициализируйте все поля через конструктор, выполняя глубокое клонирование.
- Все поля private, final.
- Не позволять наследникам переопределять методы, тк можно помещать наследников в переменные родителей.
Простой способ - объявить class как final. Более сложный способ сделать приватный конструктор и
использовать factory method для создания.
JAVA core immutable classes:
- String.
- Wrapper classes (Integer, Byte, Long, Float, Double, Character, Boolean and Short.
- BigInteger, BigDecimal.
- Unmodifiable collections such as Collections.singletonMap().
- Enums.
- Locale, Time etc.
- UUID.
- LocalDate, LocalTime etc.
- Record class.
Immutable collection
Collections.unmodifiableList(java.util.List|<? extends T>>)