En mi proyecto Java, tengo un vector de varios tipos de comerciantes. Estos diferentes tipos de operadores son subclases de la clase Trader. En este momento, tengo un método que toma un comerciante como argumento y lo almacena 50 o más veces en el vector. Estoy teniendo problemas porque almacenar el mismo objeto 50 veces es solo almacenar 50 referencias del mismo objeto. Necesito almacenar 50 copias del objeto. Investigué sobre la implementación de Clone, pero no quiero que los programadores que definen un tipo de Trader tengan que preocuparse por hacer clonable su clase. Además, como se señala en this page, la implementación del clon crea todo tipo de problemas. No creo que un constructor de copia funcione tampoco, porque si definiera uno en la clase Trader, no sabría el tipo de Trader que estaba copiando y simplemente crearía un Trader genérico. ¿Que puedo hacer?¿Hay alguna alternativa para implementar Clone en Java?
Editar: Realmente no quiero hacer copias exactas de un objeto determinado. Lo que realmente intento hacer es agregar un cierto número de operadores al vector. El problema es que el usuario necesita especificar en un argumento qué tipo de Trader quiere agregar. Aquí está un ejemplo de lo que estoy tratando de hacer: (aunque mi sintaxis es completamente imaginaria)
public void addTraders(*traderType*)
{
tradervect.add(new *traderType*())
}
¿Cómo puedo lograr algo como esto en Java?
No veo cómo puedo hacer que la clase Trader genérica sea una interfaz porque la clase Trader tiene métodos que deben ser accesibles. Hacer una interfaz significaría que todos esos métodos de bajo nivel no permitirían que esos métodos se definan en la clase Trader. –
Si el comerciante es una clase abstracta o interfaz es irrelevante. En general, se prefiere una interfaz a una clase abstracta. También prefiere la delegación a la herencia. –