Это имеет смысл. В конструкторе, который вызывается clone()
с исходной коллекцией в качестве аргумента, вы используете:
ElementInterface element = collection.Remove().clone();
Таким образом, вы удаляете элементов из исходной коллекции при создании новой. Ты не хочешь этого делать ...
Не совсем понятно, как вы можете достичь того, чего хотите, учитывая, что похоже, что ваши CollectionInterface
только имеют Add
и Remove
методы (которые должны быть add
и remove
следовать соглашениям об именах Java) для работы с элементами - нет способа неразрушающего доступа к коллекции. Это очень странно для типа коллекции. Есть ли какая-либо причина, по которой вы делаете это в первую очередь вместо использования встроенных коллекций?
РЕДАКТИРОВАТЬ: Ах - я только что подумал. В пределах класса у вас есть доступ к внутренним элементам создаваемой коллекции ... так что вы можете разрушительно скопировать элементы из коллекции, которую вы дали, вызвав Remove
(как сейчас), но когда вы построите свой массив, вы можете использовать:
for (int i = 0; i < amountOfElements; i++)
{
collection.Add(elementArray[i].clone2());
}
... что снова вернет elemnts. Это ужасно хотя ...