Рубрики
Без рубрики

Неизменяемый класс в Java

В этой статье мы определим типичные шаги для создания неизменяемого класса в Java, а также рассмотрим… Помеченный java, неизменяемый.

В этой статье мы определим типичные шаги для создания неизменяемого класса в Java, а также прольем свет на распространенные ошибки, которые допускают разработчики при создании неизменяемых классов.

посетите оригинальную статью: https://www.java8net.com/2020/11/immutable-class-in-java.html

Шаги по созданию неизменяемого класса в java

  1. Сделайте свой класс окончательным, чтобы никакие другие классы не могли его продлить.
  2. Сделайте все поля закрытыми, чтобы прямой доступ был запрещен.
  3. Не предоставляйте методы “настройки” — методы, которые изменяют поля или объекты, на которые ссылаются поля.
  4. Особое внимание при наличии изменяемых переменных экземпляра 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

  1. Класс string представляет неизменяемый объект для последовательности символов.
  2. Классы-оболочки, такие как Integer, Float, Long и т.д. все они представляют неизменяемый объект для соответствующего примитивного типа.
  3. java.использование. UUID представляет уникальную 128-битную шестнадцатеричную строку.

Преимущества создания неизменяемого класса в java

  1. Неизменяемые объекты по умолчанию являются потокобезопасными.
  2. Неизменяемые объекты можно легко кэшировать.
  3. Неизменяемые объекты – лучшие варианты для использования в качестве ключевого объекта на любой карте, такой как HashMap.

посетите оригинальную статью: https://www.java8net.com/2020/11/immutable-class-in-java.html

Оригинал: “https://dev.to/aryan19694946/immutable-class-in-java-4m51”