Ich habe einige Probleme mit dem Verständnis der folgenden: Ich sollte eine Schnittstelle namens IDeepCopy implementieren.IDeepCopy Interface java
Beschreibung „Diese Schnittstelle benötigt wird, da die klonbar Schnittstelle von Java zur Verfügung gestellt wird, die Klon-Methode von Objekt nicht neu deklarieren. Wir wollen es so beschränkten Typs für generische Klassen verwenden, um diese zusätzliche Schnittstelle benötigt wird. Wir haben uns entschieden zu verwenden eine IDeepCopy-Schnittstelle, die die Handhabung von Kopieren/Klonen von Objekten vereinfacht Klassen, die diese Schnittstelle implementieren, sollten eine Kopie von Objekt erstellen, indem sie entweder einen privaten Kopierkonstruktor aufrufen oder ein neues Objekt derselben Klasse erstellen und seine Werte entsprechend setzen Beachten Sie, dass Attribute von Klassen ebenfalls kopiert werden sollten (wenn sie die IDeepCopy-Schnittstelle implementieren), bevor sie für das kopierte Objekt festgelegt werden. IDeepCopy deepCopy() "
Ich habe die Schnittstelle deklariert, aber ich weiß nicht wirklich, wie ich die Methode entsprechend implementieren soll.
Meine Idee ist die folgende (Implementierung des Verfahrens in einer Unterklasse):
public SimpleProduct deepCopy(){
return new SimpleProduct(x,x);
}
Aber wie kann ich die Attribute gesetzt gesetzt, wenn ich nicht ein Objekt als Parameter in deepcopy bekommen?
ich überprüfen würde, wenn 'y' implementiert' IDeepCopy' vor 'y.deepCopy()' – c0der
@ c0der, wenn es implementiert es nicht, es wird nicht kompiliert. –
Das stimmt. Um das Beispiel generischer zu machen, können Sie 'return (y instanceof IDeepCopy) verwenden? neues SimpleProduct (x, (IDeepCopy) y.deepCopy()); : new SimpleProduct (x, y); ' – c0der