Встречается на собеседованиях • сегодня
Что необходимо предусматривать при клонировании объекта иммутабельного класса
При клонировании иммутабельного класса важно учитывать:
1. **Необходимость клонирования**: иммутабельные объекты можно безопасно разделять между потоками, поэтому часто клонирование не требуется. Если объект уже иммутабелен, возвращайте его же через `this`.
2. **Глубокое клонирование**: если класс содержит изменяемые поля, их нужно клонировать рекурсивно.
Пример:
```java
public final class ImmutableClass implements Cloneable {
private final List items;
public ImmutableClass(List items) {
this.items = Collections.unmodifiableList(new ArrayList<>(items));
}
@Override
public Object clone() {
try {
// Возвращаем this, так как класс иммутабельный
return super.clone();
} catch (CloneNotSupportedException e) {
throw new AssertionError();
}
}
}
```
3. **Переопределение clone()**: сделайте метод public и рассмотрите возврат конкретного типа. Для иммутабельных классов можно просто возвращать текущий объект.
4. **Потокобезопасность**: иммутабельные объекты по определению потокобезопасны, это свойство должно сохраняться после клонирования.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы