W moim projekcie Java mam wektor różnych typów traderów. Te różne typy handlowców są podklasami klasy Trader. W tej chwili mam metodę, która bierze Tradera jako argument i przechowuje go 50 lub więcej razy w wektorze. Mam problem, ponieważ przechowywanie tego samego obiektu 50 razy to przechowywanie 50 referencji tego samego obiektu. Muszę przechowywać 50 kopii obiektu. Badałem na temat implementacji Clone, ale nie chcę, aby programiści definiowali typ Tradera, który musiałby się martwić o to, aby ich klasy były klonowalne. Ponadto, jak zauważył this page, implementacja klona stwarza wiele problemów. Nie sądzę, by konstruktor kopii działał, ponieważ jeśli zdefiniowałbym go w klasie Trader, nie znałby rodzaju Tradera, który kopiował i po prostu zrobił zwykłego Tradera. Co mogę zrobić?Czy są jakieś alternatywy dla wdrażania Clone w Javie?
Edytuj: Naprawdę nie chcę tworzyć dokładnych kopii danego obiektu. Naprawdę staram się dodać do wektora pewną liczbę traderów. Problem polega na tym, że użytkownik musi określić w argumencie, który typ Maklera chce dodać. Oto przykład tego, co próbuję zrobić (chociaż moja składnia jest całkowicie wyimaginowane)
public void addTraders(*traderType*)
{
tradervect.add(new *traderType*())
}
Jak mogę osiągnąć coś takiego w Java?
Nie widzę sposobu, w jaki można uczynić ogólne klasy Trader interfejsem, ponieważ klasa Trader ma metody, które muszą być dostępne. Utworzenie interfejsu oznaczałoby, że wszystkie te metody niskiego poziomu nie pozwoliłyby na zdefiniowanie tych metod w klasie Trader. –
To, czy Trader jest abstrakcyjną klasą, czy interfejsem, jest nieistotne. Ogólnie interfejs jest preferowany w stosunku do klasy abstrakcyjnej. Również preferuj delegację do dziedziczenia. –