Nel mio progetto Java, ho un vettore di vari tipi di Commercianti. Questi diversi tipi di trader sono sottoclassi della classe Trader. In questo momento, ho un metodo che accetta un Trader come argomento e lo memorizza circa 50 volte nel vettore. Sto avendo problemi perché la memorizzazione dello stesso oggetto 50 volte è solo la memorizzazione di 50 riferimenti dello stesso oggetto. Devo memorizzare 50 copie dell'oggetto. Ho studiato l'implementazione di Clone, ma non voglio che i programmatori definiscano un tipo di Trader che deve preoccuparsi di rendere la propria classe clonabile. Inoltre, come sottolineato da this page, l'implementazione del clone crea tutti i tipi di problemi. Non penso che un costruttore di copia possa funzionare o perché se ne definissi uno nella classe Trader, non saprebbe il tipo di Trader che stava copiando e basta creare un Trader generico. Cosa posso fare?Esistono alternative all'implementazione di Clone in Java?
Edit: Non sto davvero volendo fare copie esatte di un certo oggetto. Quello che sto cercando di fare è aggiungere un certo numero di trader al vettore. Il problema è che l'utente deve specificare in un argomento quale tipo di commerciante vuole aggiungere. Ecco un esempio di quello che sto cercando di fare: (anche se la mia sintassi è completamente immaginario)
public void addTraders(*traderType*)
{
tradervect.add(new *traderType*())
}
Come posso ottenere qualcosa di simile a Java?
Non vedo come posso rendere la classe Trader generica un'interfaccia perché la classe Trader ha metodi che devono essere accessibili. Fare un'interfaccia significherebbe che tutti quei metodi di basso livello non permetterebbero di definire quei metodi nella classe Trader. –
Se Trader è una classe astratta o un'interfaccia è irrilevante. Generalmente un'interfaccia è preferita su una classe astratta. Preferisci anche la delega all'eredità. –