所以,我有三个类(Person,Employee和Manager)。员工扩展了Person,Manager扩展了Employee ......
我正在尝试为每个类创建一个克隆方法。人很容易,因为我可以创建一个具有所有相同数据成员的新Person。
public Object clone(){
Person temp = new Person(new String(name), new String(address), new String(phoneNumber));
return temp;
}
员工是可能的,因为我可以使用super的get方法创建一个新的Employee来初始化那些数据成员以及Employee中的新成员。
public Object clone(){
Employee temp = new Employee(new String(super.getName()), new String(super.getAddress()),
new String(super.getPhoneNumber()), salary);
temp.hireDate = new Date(hireDate.getTime()); //Argument for new Date in milliseconds
return temp;
}
但是,对于Manager,我无法从Person ...
获取数据成员 public Object clone(){
Object temp = (Manager)super.clone();
((Manager)temp).annualBonus = annualBonus;
return temp;
}
我想要做的是在每个类的clone方法中调用每个super.clone()方法,但它不允许我向下转换,例如调用Person的克隆,并将结果向下转换为Employee。 ..
答案 0 :(得分:0)
您可以使用Java深度克隆库。我过去使用它并且运行良好。它的深层克隆对象的java库。您甚至不能使用Cloneable接口。
Cloner cloner = new Cloner();
YourClass clone = cloner.deepClone(someObjectOfTypeYourClass);
找到
答案 1 :(得分:0)
感谢您的建议,但我明白了......
由于我不能贬低Person,我需要通过调用Person中的get方法来构建一个Employee ..
Object temp = new Employee(super.getName(), super.getAddress(), super.getPhoneNumber(), salary);