4

Javaのオブジェクトを、最初のオブジェクトへのすべての参照を更新して、代わりに2番目のオブジェクトを指すようにする別のオブジェクトに置き換える方法はありますか?C#では、この質問にここで回答しました。C#ではオブジェクトインスタンスを別のインスタンスに置き換えますが、Javaでこれを実行できるかどうか疑問に思っていました。ありがとう!

編集:1。最初のオブジェクトをサブタイプのオブジェクトに置き換えたい。2.最初のオブジェクトの実装を編集できないため、サブタイプに置き換えています。サブタイプを編集できます。

4

2 に答える 2

7

できたとしても、これをしないでください。代わりに、別のクラスを使用して、置換するオブジェクトを含めるかラップします。コンテナーは、オリジナルのメソッドを呼び出すことによって、オリジナルから必要なすべてのメソッドを実装する必要がありますが、ラップされたクラスはいつでも簡単に置き換えることができます。ラッパー、元のクラス、およびそれを置き換えるクラスはすべて、同じインターフェイスを実装する必要があります。このソリューションは少し手間がかかりますが、時間の経過とともに持ちこたえます。

あなたが本当に必要としているのは、多くのアップグレード可能なコンポーネント パーツを持つクラスだと思いますが、これは初心者にとっては十分であり、正しい方法で考えることができます。

于 2012-08-24T21:09:36.397 に答える
2

特定のタイプのすべてのインスタンスをサブタイプに置き換えることが意図されている場合は、 Java エージェントの使用を検討できます。

これを使用して、クラスロード中に基本クラスを拡張クラスに置き換えます。

于 2012-08-24T20:57:14.353 に答える