如何通过asm
或javassist
动态修改类的超类以指向另一个类作为其超类?
我知道如何修改课程的方法和字段。
答案 0 :(得分:0)
你应该看看setSuperclass
。这是一个小例子:
CtClass c = pool.getCtClass("com.my.class.A");
c.setSuperclass(pool.getCtClass("com.my.class.B"));
Here是此方法的文档:
public void setSuperclass(CtClass clazz) 抛出CannotCompileException
更改超类,除非此对象表示接口。新的超级必须 与旧的兼容;例如,它应该继承自 老超级。
如果此对象表示接口,则为此 方法相当于addInterface();它将clazz添加到列表中 由该接口扩展的超级接口。注意一个 接口可以扩展多个超级接口。