シナリオ: サブクラスの階層があり、そのすべてが単一距離先祖クラスから継承されています。階層内のすべてのスーパー クラスは抽象クラスであるため、具象クラスはサブクラスを持たないクラスのみです。私は配列を持っています:
AncestralClass[] someObjects1 = new AncestralClass[someLength];
ancestralClass は、他のすべてのクラスが継承する階層の最上位にある単一のスーパー クラスです。この配列には、さまざまな具象サブクラスのさまざまなオブジェクトが取り込まれます。例えば:
someObjects1[4] = new SubclassObject();
... 等々。
まったく同じ形式 (同じ型、サイズなど) の 2 番目の配列がありますが、2 番目の配列は最初の配列を使用して、さまざまな具象サブクラスに属するオブジェクトを再度入力します。より具体的には、2 番目の配列の要素のオブジェクト タイプは、最初の配列の同じ要素で見つかったオブジェクト タイプに基づいて決定されます。したがって、私が抱えている問題は次のとおりです。最初の配列の内容は実行時にランダムに生成されるため、最初の配列に何が含まれているかわかりません。したがって、最初の配列に依存しているため、2番目の配列の内容がどうあるべきかわかりません配列。2 番目の配列で新しいオブジェクトをインスタンス化するコードの書き方がわかりません。英語で書かれていると、私が実現したいことはとてもシンプルで簡単に聞こえます。2番目の配列をループしたいのですが、最初の配列で対応する位置を確認し、それがどのような種類のオブジェクトであるかを確認してから、2 番目の配列でその型の新しいオブジェクトをインスタンス化します。その通り、コーディング方法がわからないことがあります。
someObjects2[i] = new (subclass that someObjects1[i] belongs to)();
質問 より一般的に言えば、既存のオブジェクトが属するクラスの新しいインスタンスである新しいオブジェクトをインスタンス化したいと考えています。これを行うにはどうすればよいですか。複数のソリューションがあると確信しているので、どれが優れていますか?