kun*_*nal 0 java inheritance copy-constructor cloning
我正在编写一个用于克隆对象的复制构造函数.当一个类引用一个对象时,该对象被其他几个类进一步说明.
class Person
{
String name;
Address address;
}
class HomeAdress extends Address
{
}
class OfficeAdress extends Address
{
}
Run Code Online (Sandbox Code Playgroud)
现在在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);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,当将新类型的地址添加到模型时,这是基本问题.我将不得不在Person复制构造函数中添加相同的检查.有没有办法避免instanceof检查实例化正确的地址对象.我可以使用refelction来避免代码中的instanceof吗?
您应该将复制地址的责任委托给Address班级.无论您是否实现Cloneable,都可以使用clone()方法Address,然后您可以(如果需要自定义处理)在每个特定Address子类中覆盖它.然后在您的Person复制构造函数中,您只需要:
this.address = p.address.clone();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1278 次 |
| 最近记录: |