Ява вернуть копию, чтобы скрыть будущие изменения

голоса
5

В Java, скажем , у вас есть класс , который обертывания ArrayList(или любой коллекции) объектов.

Как бы вы вернуть один из этих объектов таким образом, что абонент не будет видеть любые будущие изменения объекта, сделанный в ArrayList?

т.е. вы хотите вернуть глубокую копию объекта, но вы не знаете, если это клонируемое.

Задан 27/08/2008 в 10:48
источник пользователем
На других языках...                            


3 ответов

голоса
4

Включите , что в спецификации:
-Вот объекты должны реализовать интерфейс для того , чтобы иметь возможность в коллекции что - то вродеArrayList<ICloneable>()

Тогда вы можете быть уверены, что вы всегда делать глубокую копию - интерфейс должен иметь метод, который гарантированно вернуть глубокую копию.

Я думаю, что это лучшее, что вы можете сделать.

Ответил 27/08/2008 в 10:52
источник пользователем

голоса
2

Один из вариантов заключается в использовании сериализации. Вот блог, объясняя это:

http://weblogs.java.net/blog/emcmanus/archive/2007/04/cloning_java_ob.html

Ответил 27/08/2008 в 10:52
источник пользователем

голоса
1

Я полагаю, что это ovbious ответ:

Сделайте реквизит для классов, хранящихся в коллекции, чтобы быть клонируемыми. Вы можете проверить, что во время вставки или извлечения времени, независимо имеет больше смысла, и бросить исключение.

Или, если элемент не клонируемый, просто не в состоянии вернуться к возвращению по эталонному варианту.

Ответил 27/08/2008 в 10:53
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more