В этой статье мы определим типичные шаги для создания неизменяемого класса в Java, а также прольем свет на распространенные ошибки, которые допускают разработчики при создании неизменяемых классов.
посетите оригинальную статью: https://www.java8net.com/2020/11/immutable-class-in-java.html
Шаги по созданию неизменяемого класса в java
- Сделайте свой класс окончательным, чтобы никакие другие классы не могли его продлить.
- Сделайте все поля закрытыми, чтобы прямой доступ был запрещен.
- Не предоставляйте методы “настройки” — методы, которые изменяют поля или объекты, на которые ссылаются поля.
- Особое внимание при наличии изменяемых переменных экземпляра 4.1) Внутри конструктора убедитесь, что вы используете клонированную копию переданного аргумента и никогда не устанавливаете изменяемое поле в реальный экземпляр, переданный через конструктор. 4.2) Обязательно всегда возвращайте копию поля-клона и никогда не возвращайте экземпляр реального объекта.
Реализация неизменяемого класса в java
class Address{ private String houseNumber; private String street; private String city; } final class User { private final int id; private final String name; private final String email; private final Address address; /* * To clone the address. */ private static Address cloneAddress(Address address) { return new ObjectMapper().convertValue(address, Address.class); } User(int id, String name, String email, Address address) { this.id = id; this.name = name; this.email = email; /* * Any field contains reference of any mutable * object must be * initialized with the cloned object */ this.address = cloneAddress(address); } public int getId() { return id; } public String getName() { return name; } public String getEmail() { return email; } public Address getAddress() { /* * Getter method must return the reference of cloned object. */ return cloneAddress(address); } }
Предопределенный неизменяемый класс в java
- Класс string представляет неизменяемый объект для последовательности символов.
- Классы-оболочки, такие как Integer, Float, Long и т.д. все они представляют неизменяемый объект для соответствующего примитивного типа.
java.использование. UUID
представляет уникальную 128-битную шестнадцатеричную строку.
Преимущества создания неизменяемого класса в java
- Неизменяемые объекты по умолчанию являются потокобезопасными.
- Неизменяемые объекты можно легко кэшировать.
- Неизменяемые объекты – лучшие варианты для использования в качестве ключевого объекта на любой карте, такой как HashMap.
посетите оригинальную статью: https://www.java8net.com/2020/11/immutable-class-in-java.html
Оригинал: “https://dev.to/aryan19694946/immutable-class-in-java-4m51”