Когда я буду использовать мелкую копию?
Я понимаю, в чем разница между мелкой и глубокой копией, но я действительно не понимаю, в каких ситуациях предпочтительна бы мелкая копия.
Если я не ошибаюсь, мелкая копия создает новую копию типов значений и просто копирует адрес ссылочных типов, чтобы они указывали на один и тот же объект, правильно? Зачем мне этот эффект?
2 ответа
На самом деле мелкая копия - это путь с наименьшими усилиями, делающий меньше. Это особенно подходит для неизменных объектов, где совместное использование является оптимальным.
Неизменяемый объект не имеет внутреннего состояния, не может быть изменен, только переменные могут быть установлены на другое значение.
В яве String
а также BigDecimal
неизменны.
Неизменяемые объекты позволяют лучше использовать потоки.
Для изменяемых классов вас могут заинтересовать структуры данных с копированием при записи, где совместное использование происходит до тех пор, пока не будет записана одна переменная.
Я думаю, что один хороший пример может помочь понять концепцию. Предположим, у вас есть список кортежей. И вы список функции для обработки чего-либо. Создание некоторых подсписков из исходного может помочь в функции, и это не обязательно для глубокого копирования всех кортежей в списке. И вам просто нужно скопировать эти указатели ( small-copy).