? Zuerst muss Ihre Item
Klasse die Cloneable
Schnittstelle implementieren oder andernfalls wird clone()
eine Ausnahme auslösen erklärt in der documentation for Object#clone()
.
Zweitens muss Ihre Klasse eine öffentliche Version von clone()
implementieren, da die clone()
-Methode Object
protected
ist.
Schließlich müssen Sie möglicherweise das Ergebnis in eine Item
umwandeln, damit die Zuweisung funktioniert, je nachdem, wie Sie in Klasse clone()
in Klasse deklarieren.
EDIT (basierend auf OPs edit):
public class Item implements Cloneable {
...
public Item clone() {
return (Item) super.clone();
}
}
Es gibt keine Notwendigkeit zu erklären, dass es wirft CloneNotSupportedException
, weil es nicht werden: Ihre clone()
Methode wie folgt aussehen sollte.
Ich würde jedoch empfehlen, dass Sie clone()
insgesamt nicht mehr verwenden und einfach eine Kopie Konstruktor implementieren:
public class Item {
public Item(Item other) {
// copy over relevant fields
}
// ... other constructors
}
Dann können Sie Ihre „Klon“ wie folgt erstellen:
Item newItem = new Item(addedItem);
was bist du erwartet zu bekommen? – DimaSan
"Wird nicht funktionieren" ist nicht sehr nützlich, um Hilfe auf dieser Website zu finden. Sie sollten mehr Details geben! – Renzo
Haben Sie versucht, 'Item newItem = (Item) addedItem.clone();'? Implementiert 'Item'' Cloneable'? Das angeboten wird, ist "Cloneable" gebrochen (http://www.artima.com/intv/bloch13.html). – bradimus