Как я глубоко скопировал бы вектор в J2ME / BlackBerry?

Как я глубоко скопировал бы вектор в J2ME / BlackBerry?

5
задан Maksym Gontar 23 March 2010 в 05:30
поделиться

3 ответа

К сожалению, нет надежного способа сделать глубокую копию вектора объектов.

Просто беглый обзор того, что я считаю «глубокой копией»: Глубокая копия - это копия, в которой не только копируется содержимое коллекции (в данном случае вектор), но и объекты, содержащиеся в векторе, копируются. скопировал самостоятельно. Другими словами: если вектор V содержит A, и сделана копия (V ') из V, на копию A (A') в V 'не влияют никакие изменения в A и наоборот.

Обычно это реализуется путем «клонирования» объекта. К сожалению, если у вас нет контроля над объектами в векторе, у вас нет разумного способа клонировать их, тем более что JavaME не имеет интерфейса клонирования (насколько я мог найти).

Конечно, если вы управляете объектами, вы можете создать свой собственный интерфейс Cloneable, который определяет метод clone (), который возвращает полностью независимую копию объекта. Затем вы должны убедиться, что ваш специальный вектор клонирования принимает только объекты, реализующие этот интерфейс. Оттуда довольно легко (с точки зрения кода) создать вектор, который может клонировать себя.

7
ответ дан 18 December 2019 в 14:44
поделиться

Вам потребуется скопируйте содержимое вашего вектора с помощью цикла.

Enumeration e = projects.elements();
while (e.hasMoreElements()) {
    this.projects.addElement((Project) e.nextElement());
}

Требуется дополнительная информация, см. Форум Java стр. 2, ответ 18, ответ есть.

2
ответ дан 18 December 2019 в 14:44
поделиться

Поскольку вы отметили это как BlackBerry, а не только как J2ME, следует упомянуть, что существует класс CloneableVector, который является частью API BlackBerry. Если вы пытаетесь придерживаться строгого J2ME, от этого будет мало толку. Однако, если вы просто ориентируетесь на BlackBerry, это соответствует вашим потребностям.

net.rim.device.api.util.CloneableVector документация

4
ответ дан 18 December 2019 в 14:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: