オブジェクトのクローンを作成するためのコピーコンストラクターを作成しています。クラスが、他のいくつかのクラスによってさらに継承されるオブジェクトへの参照を持っている場合。
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チェックを回避する方法はありますか?コードからinstanceofを回避するためにrefelctionを使用できますか?