我通过传入超类的实例来创建子类的实例。这是我的代码——有效——但感觉不对。
我的问题是:Java 没有使用对象强制转换或类似方法对此提供本机支持吗?
或者如果我真的想自动化这个,我是否被迫使用反射/BeanUtils?
下面的示例已被简化以突出问题。我的真实世界代码有更多的领域。
谢谢,亚当。
import java.util.Date;
public class Person
{
private String name;
private Date dateOfBirth;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public Date getDateOfBirth()
{
return dateOfBirth;
}
public void setDateOfBirth(Date dateOfBirth)
{
this.dateOfBirth = dateOfBirth;
}
}
public class Soldier extends Person
{
private String rank;
public Soldier(final Person p)
{
/*
* Isn't there a better way of doing this? What if we add a new
* attribute to Person - we could forget to add it here...
*/
setName(p.getName());
setDateOfBirth(p.getDateOfBirth());
}
public String getRank()
{
return rank;
}
public void setRank(String rank)
{
this.rank = rank;
}
}