В моем проекте Java у меня есть вектор различных типов трейдеров. Эти различные типы трейдеров являются подклассами класса Trader. Прямо сейчас у меня есть метод, который принимает трейдера как аргумент и сохраняет его в векторе примерно 50 раз. У меня возникают проблемы, потому что хранение одного и того же объекта 50 раз - это просто сохранение 50 ссылок того же объекта. Мне нужно сохранить 50 экземпляров объекта. Я исследовал реализацию Clone, но я не хочу, чтобы программисты определяли тип трейдера, чтобы беспокоиться о том, чтобы сделать их класс клонированным. Кроме того, как указано в this page, реализация клона создает всевозможные проблемы. Я не думаю, что конструктор копирования работал бы потому, что, если бы я определил его в классе Trader, он не знал бы тип Trader, который он копировал, и просто создал общий трейдер. Что я могу сделать?Есть ли альтернативы реализации Clone в Java?
Редактировать: Я не очень хочу делать точные копии определенного объекта. То, что я действительно пытаюсь сделать, это добавить определенное количество трейдеров к вектору. Проблема в том, что пользователь должен указать в аргументе, какой тип трейдера он хочет добавить. Вот пример того, что я пытаюсь сделать: (хотя мой синтаксис полностью мнимая)
public void addTraders(*traderType*)
{
tradervect.add(new *traderType*())
}
Как я могу добиться чего-то вроде этого в Java?
Я не вижу, как я могу сделать общий класс Trader интерфейсом, потому что класс Trader имеет методы, которые должны быть доступны. Создание интерфейса означало бы, что все эти методы низкого уровня не позволят определять эти методы в классе Trader. –
Независимо от того, является ли Trader абстрактным классом или интерфейсом, это не имеет значения. Как правило, интерфейс предпочтительнее абстрактного класса. Также предпочитаем делегировать наследование. –