입니다 먼저 Item
클래스에서 Cloneable
인터페이스를 구현해야합니다. 그렇지 않으면 clone()
이 예외를 throw합니다. documentation for Object#clone()
에 설명되어 있습니다.
두 번째로 clone()
방법이 Object
인 경우 클래스는 protected
이므로 공개 버전을 구현해야합니다. 할당이 작동하려면
마지막으로, 당신은 당신이 클래스 Item
에 clone()
를 선언하는 방법에 따라 한 Item
에 결과를 캐스팅해야 할 수도 있습니다. (OP의 편집 기준)
편집 : 귀하의 clone()
방법은 다음과 비슷한 모습이 될 것입니다은 :
public class Item implements Cloneable {
...
public Item clone() {
return (Item) super.clone();
}
}
있기 때문에하지 않습니다, 그것은 CloneNotSupportedException
발생을 선언 할 필요가 없습니다.
난 당신이 모두
clone()
사용을 중지하고 단순히 복사 생성자 구현하는 것이, 그러나 추천 할 것입니다
:
public class Item {
public Item(Item other) {
// copy over relevant fields
}
// ... other constructors
}
그런 다음이처럼 "복제"를 만들 수 있습니다
Item newItem = new Item(addedItem);
당신이 무엇을 도착하기를 기대하니? – DimaSan
"Will not work"는이 사이트에서 도움을 얻는 데별로 도움이되지 않습니다. 더 자세한 정보를 제공해야합니다! – Renzo
'Item newItem = (Item) addedItem.clone();'시도해 보셨습니까? 'Item'은'Cloneable'을 구현합니까? 그것이 제공되면서, [Cloneable은 망가졌다.] (http://www.artima.com/intv/bloch13.html). – bradimus