Sobes.tech
Back to questions
Junior — Middle
54

Что представляет собой неизменяемость объектов в Java и какие классы по умолчанию являются таковыми?

Answer from AI

sobes.tech AI

Неизменяемость объектов в Java означает, что после создания объекта его состояние (значения полей) нельзя изменить. Это повышает безопасность и упрощает многопоточную работу, так как неизменяемые объекты не требуют синхронизации.

Класс считается неизменяемым, если:

  • Все поля объявлены как final.
  • Класс объявлен как final или не имеет методов, которые могут изменить состояние.
  • Нет сеттеров или других методов, изменяющих поля.
  • Если поля — ссылки на объекты, то эти объекты тоже неизменяемы или копируются при передаче.

Примеры неизменяемых классов в стандартной библиотеке Java:

  • String
  • Обертки примитивных типов: Integer, Long, Double, Boolean и т.д.
  • BigInteger, BigDecimal

Пример создания собственного неизменяемого класса:

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

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}