Sobes.tech
Junior — Middle
102

Wie kann man eine Klasse erstellen, deren Objekte nach ihrer Erstellung nicht verändert werden können?

Unternehmen wurden gefragt
IT OneIT One

Antwort von AI

sobes.tech KI

Чтобы создать неизменяемый (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);
}

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