我正在编写一个用于克隆对象的复制构造函数。当一个类引用了一个对象,该对象被少数其他类进一步继承。
class Person
{
String name;
Address address;
}
class HomeAdress extends Address
{
}
class OfficeAdress extends Address
{
}
现在在 Person 的复制构造函数中,要决定要启动哪个 Address 对象,我必须使用 instanceof。
public Person(Person p)
{
name = p.name;
if(p.address instanceof HomeAddress)
{
address = new HomeAddress((HomeAddress) address);
}else if(p.address instanceof OfficeAddress)
{
address = new OfficeAddress((OfficeAddress) address);
}
}
因此,当将新类型的地址添加到模型中时,基本问题是这样的。我将不得不在 Person 复制构造函数中添加一个相同的检查。有没有办法避免 instanceof 检查实例化正确的地址对象。我可以使用refelction来避免代码中的instanceof吗?