In meinem Java-Projekt habe ich einen Vektor von verschiedenen Arten von Händlern. Diese verschiedenen Arten von Händlern sind Unterklassen der Trader-Klasse. Im Moment habe ich eine Methode, die einen Trader als Argument verwendet und ihn etwa 50 Mal im Vektor speichert. Ich habe Probleme, weil das 50-malige Speichern des gleichen Objekts nur 50 Referenzen desselben Objekts speichert. Ich muss 50 Kopien des Objekts speichern. Ich habe über die Implementierung von Clone recherchiert, aber ich möchte nicht, dass die Programmierer, die einen Trader-Typ definieren, sich darum sorgen müssen, dass ihre Klasse klonbar wird. Wie in this page gezeigt, erzeugt der implementierende Klon alle möglichen Probleme. Ich glaube nicht, dass ein Kopierkonstruktor auch funktionieren würde, denn wenn ich einen in der Trader-Klasse definieren würde, würde er den Typ des Händlers, den er kopiert, nicht kennen und einfach einen generischen Trader erstellen. Was kann ich tun?Gibt es Alternativen zur Implementierung von Clone in Java?
Edit: Ich will nicht wirklich genaue Kopien eines bestimmten Objekts erstellen. Ich versuche wirklich, dem Vektor eine bestimmte Anzahl von Tradern hinzuzufügen. Das Problem besteht darin, dass der Benutzer in einem Argument angeben muss, welche Art von Trader er hinzufügen möchte. Hier ist ein Beispiel dafür, was ich zu tun versucht: (obwohl meine Syntax völlig imaginär)
public void addTraders(*traderType*)
{
tradervect.add(new *traderType*())
}
Wie kann ich so etwas wie dies in Java erreichen?
Ich sehe nicht, wie ich die generische Trader-Klasse zu einer Schnittstelle machen kann, weil die Trader-Klasse über Methoden verfügt, auf die zugegriffen werden muss. Das Erstellen einer Schnittstelle würde bedeuten, dass all diese Methoden der unteren Ebene es nicht zulassen würden, dass diese Methoden in der Trader-Klasse definiert werden. –
Ob Trader eine abstrakte Klasse oder Schnittstelle ist, ist irrelevant. Im Allgemeinen wird eine Schnittstelle gegenüber einer abstrakten Klasse bevorzugt. Ziehen Sie auch die Delegation zur Vererbung vor. –