Sobes.tech
Junior — Middle
108

¿Cómo se puede crear una clase cuyos objetos no puedan ser modificados después de su creación?

Empresas donde se preguntó
IT OneIT One

Respuesta de la IA

sobes.tech AI

Чтобы создать неизменяемый (immutable) класс в Java, нужно:

  • Сделать класс final, чтобы его нельзя было унаследовать и изменить поведение.
  • Все поля сделать private и final.
  • Не предоставлять сеттеры (методы для изменения полей).
  • Инициализировать все поля через конструктор.
  • Если поля — это изменяемые объекты (например, массивы, коллекции), создавать их копии при присваивании и при возврате из геттеров.

Пример:

public final class ImmutablePerson {
    private final String name;
    private final int age;

    public ImmutablePerson(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

Если есть поля-объекты, например, список, то в геттере нужно возвращать копию:

private final List<String> items;

public ImmutableClass(List<String> items) {
    this.items = new ArrayList<>(items);
}

public List<String> getItems() {
    return new ArrayList<>(items);
}

Такой подход гарантирует, что после создания объекта его состояние нельзя изменить.