ASMSupport是一个字节码操作类库, 他使得程序员更简单的能够在运行时动态修改和创建类. 该框架是基于asm开发的, 但是不同于直接使用asm的是,它避免了繁杂的jvm指令,以及对栈和局部变量的操作。
变更
1. 项目结构模块化
将项目拆分成如下模块
拆分模块主要做作用就是标准化接口,后续能够针对统一的接口实现不同版本的封装,逐步依赖使得结构更清晰,作为使用者可直接引用core或者client模块。
java代码:
String message = new StringBuilder().append("Hello ASMSupport")
老版本:
Var message = var("message", StringBuilder.class, call(new_(StringBuilder.class), "append", val("Hello, ASMSupport")))
新版本:
Var message = _new(StringBuilder.class).call("append", val("Hello, ASMSupport")).asVar("message", StringBuilder.class)
新版本同样支持老版本的方式。
Maven坐标
<dependency> <groupId>cn.wensiqun</groupId> <artifactId>asmsupport-core</artifactId> <version>0.4.2</version> </dependency>
或者
<dependency> <groupId>cn.wensiqun</groupId> <artifactId>asmsupport-client</artifactId> <version>0.4.2</version> </dependency>
这两个依赖对应的是asmsupport的两种实现方式,建议使用asmsupport-client
评论删除后,数据将无法恢复
ASMSupport 0.4.2 发布,Java 字节码操作
ASMSupport是一个字节码操作类库, 他使得程序员更简单的能够在运行时动态修改和创建类. 该框架是基于asm开发的, 但是不同于直接使用asm的是,它避免了繁杂的jvm指令,以及对栈和局部变量的操作。
变更
1. 项目结构模块化
将项目拆分成如下模块
拆分模块主要做作用就是标准化接口,后续能够针对统一的接口实现不同版本的封装,逐步依赖使得结构更清晰,作为使用者可直接引用core或者client模块。
2. 支持方法的链式调用
java代码:
String message = new StringBuilder().append("Hello ASMSupport")老版本:
Var message = var("message", StringBuilder.class, call(new_(StringBuilder.class), "append", val("Hello, ASMSupport")))新版本:
Var message = _new(StringBuilder.class).call("append", val("Hello, ASMSupport")).asVar("message", StringBuilder.class)新版本同样支持老版本的方式。
3. 底层支持jls 4.10支持
4. 添加部分接口
5. 修复Bug
Maven坐标
或者
这两个依赖对应的是asmsupport的两种实现方式,建议使用asmsupport-client