java-bytecode-asm - 如何使用 asm 或 javassist 动态修改类的超类
问题描述
asm
如何动态修改一个类的超类以通过or指向另一个类作为其超类javassist
?
我知道如何修改类的方法和字段。
解决方案
你应该看看setSuperclass
。这是一个小例子:
CtClass c = pool.getCtClass("com.my.class.A");
c.setSuperclass(pool.getCtClass("com.my.class.B"));
这是此方法的文档:
public void setSuperclass(CtClass clazz) 抛出无法编译异常
除非此对象表示接口,否则更改超类。新的超类必须与旧的兼容;例如,它应该继承自旧的超类。
如果此对象表示一个接口,则此方法等效于 addInterface();它将 clazz 附加到由该接口扩展的超级接口列表中。请注意,一个接口可以扩展多个超级接口。
推荐阅读
- linux - Qt Raspberry Pi 3 Linux 键盘输入
- android - ViewModel 值更改处理程序代码重复
- r - 将 %B.%Y 转换为日期在 R 中返回 NA
- c# - 使用 Entity Framework Core 5.09 在 SQLite 中查询 Guid
- java - Intellij IDEA 设置“方法调用参数:如果长则砍掉”行为不端
- video - 如何让 LG LS3450 电视正确显示字幕?
- angular - IonicDashboard 构建使用的 cordova-android 版本比 package.json 中定义的版本旧
- r - 如何在客户端本地服务器上部署shinyapp?
- php - Laravel 队列处理的事件监听器不包含我的用户
- c++ - 如何打印不同形式的数字?