いくつかのタスクを実行する基本クラス (CBase と呼びましょう) を持つライブラリがあり、この CBase クラスを拡張するクラスを作成できます。
CBase の動作は私にとって十分ではないので、同じメソッドとメンバーを持つ独自の CBase クラス (MyCBase と呼びましょう) を作成したいと思いますが、これらのメソッドは同じことを行いません。
今まではすべて問題ありません。しかし、私を妨げているのは、CBase を MyCBase に置き換えたいということです。ただし、CBase を拡張する多くのクラスがあり、それらすべてを変更したくありません。
実行時に CBase を MyCBase に置き換えることは可能ですか? となることによって
public class A extends CBase {}
になる
public class A extends MyCBase {}
コード拡張を使用してこれを実行できますか? (実行時にクラスにメソッドを追加するのと同じように。この方法で継承を変更することも可能ですか?)
ご協力ありがとうございました !
編集
フレームワーク用のプラグインを作成したいので、実行時に継承を変更したいと考えています。このようにして、フレームワークのユーザーは、ソース コードを変更せずにプラグインを使用できます (クラスの継承を CBase から MyCBase に変更します)。
編集2
次のようにすることは可能ですか?
CtClass cc = CtClass.forName("pkg.AClass");
cc.setSuperclass(CtClass.forName("mylib.MyCBase"));
cc.compile();