有一个库有一个执行某些任务的基类(我们称之为 CBase),并且可以创建扩展此 CBase 类的类。
CBase 的行为对我来说还不够,所以我想创建自己的 CBase 类(我们称之为 MyCBase),它具有相同的方法和成员,但这些方法做的事情不同。
到现在为止一切正常。但阻碍我的是我想用 MyCBase 替换 CBase。但是,我有很多扩展 CBase 的类,我不想全部更改它们。
是否可以在运行时用 MyCBase 替换 CBase?以便
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();