byte-buddy

2023-01-10 13:44:33 浏览数 (1)

与有肝胆人共事,从无字句处读书。——周恩来

分享一个字节码框架,能在jvm运行时动态加载Class、修改Class

官方文档:https://bytebuddy.net/#/

github:https://github.com/raphw/byte-buddy.git

引入:

代码语言:javascript复制
<dependency>
  <groupId>net.bytebuddy</groupId>
  <artifactId>byte-buddy</artifactId>
  <version>1.12.21</version>
</dependency>

一个简单的Hello World

代码语言:javascript复制
Class<?> dynamicType = new ByteBuddy()
  .subclass(Object.class)
  .method(ElementMatchers.named("toString"))
  .intercept(FixedValue.value("Hello World!"))
  .make()
  .load(getClass().getClassLoader())
  .getLoaded();
 
assertThat(dynamicType.newInstance().toString(), is("Hello World!"));

非常的好用

0 人点赞