다른 개체의 수퍼 클래스를 포함하는 개체의 복사본을 만들고 싶습니다. 이 예에서는 Toy
이 포함 된 Box
사본을 만들고 싶습니다. 그러나 모든 종류의 장난감이 상자에 들어있을 수 있습니다. Toy
에 복사 생성자를 만드는 가장 좋은 방법은 무엇입니까?다른 개체의 수퍼 클래스를 포함하는 개체 복사
class Box {
Toy toy;
public Box(Toy toy) {
this.toy = toy;
}
public Box(Box box) {
this.toy = new Toy(box.getToy());
}
}
abstract class Toy {
public Toy(String name) {
// ...
}
}
class Car extends Toy {
public Car(String name) {
super(name);
// ...
}
}
class Puppet extends Toy {
public Puppet(String name) {
super(name);
// ...
}
}
나는이 문제에 어떻게 접근해야하는지 정말로 모른다. 당신이 장난감 유형의 상수가있는 경우
public Box(Box box) {
this.toy = (Toy) box.getToy().clone();
}
은 또한, 대신 클래스의 열거를 사용할 수 있습니다
왜 특정 방법을 만드나요? 'Object.clone'은 이미이 의미를 가지고 있습니다 – Dici
당신은'clone()'을 사용할 수 있습니다. 나는 혼란 스럽기 때문에 그것을 피하는 것을 선호한다 ('Cloneable'은'clone' 메소드 등을 가지고 있지 않다). –
'Cloneable '을 사용하는 것이 완벽하고 안전하다고 생각합니다. doc : http://docs.oracle.com/javase/7/docs/api/java/lang/Cloneable.html – Dici