2008-08-27 6 views
5

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

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

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

ответ

4

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

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

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

1

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^