Объекты каких стандартных классов immutable в Java?
Этот вопрос знакомит с неизменяемыми объектами в стандартной библиотеке Java, которые обеспечивают безопасность данных.
Короткий ответ
Примеры неизменяемых классов в Java: String, классы-обертки для примитивов (Integer, Double, и т.д.), BigInteger, BigDecimal, и некоторые классы из библиотеки java.time (LocalDate, LocalTime).
Длинный ответ
Неизменяемые (immutable) классы — это такие классы, чьи объекты нельзя изменить после создания. В Java многие стандартные классы реализуют этот принцип для обеспечения безопасности данных.
Примеры стандартных immutable-классов:
- String: Каждая операция модификации строки создает новый объект.
- Обертки примитивов (Integer, Double, Boolean и т.д.): Эти классы предоставляют неизменяемые объекты для представления примитивных типов.
- BigInteger и BigDecimal: Используются для работы с числами высокой точности.
- Классы времени из java.time: Например, LocalDate, LocalTime, ZonedDateTime.
Особенности immutable объектов:
- Отсутствие методов, изменяющих состояние объекта.
- Использование final для полей и предотвращение наследования.
Когда использовать:
- Immutable-объекты полезны для многопоточного программирования, так как их изменение невозможно, что исключает необходимость синхронизации.
- Они помогают создать безопасные API, исключая непредвиденные изменения данных.