byte-buddy-1.12.12.jar下载 动态生成类

摘要

ByteBuddy是一个可以在运行时动态生成java class的类库。Byte Buddy是一个字节码生成和操作库,用于在Java应用程序运行时创建和修改Java

书单推荐:成为Java顶级程序员架构师 ,这20来本(高薪)必看点击获取

书单推荐:成为Java顶级程序员架构师 ,这20来本(高薪)必看点击获取

ByteBuddy是一个可以在运行时动态生成java class的类库。

Byte Buddy是一个字节码生成和操作库,用于在Java应用程序运行时创建和修改Java类,而无需编译器的帮助。除了Java类库附带的代码生成实用程序外,Byte Buddy还允许创建任意类,并且不限于实现用于创建运行时代理的接口。此外,Byte Buddy提供了一种方便的API,可以使用Java代理或在构建过程中手动更改类。


无需理解字节码指令,即可使用简单的 API 就能很容易操作字节码,控制类和方法。

已支持Java 11,库轻量,仅取决于Java字节代码解析器库ASM的访问者API,它本身不需要任何其他依赖项。

比起JDK动态代理、cglib、Javassist,Byte Buddy在性能上具有一定的优势。



使用方法

下面是一个最简单的例子:

Class<?> dynamicType = new ByteBuddy()

  // 指定父类

  .subclass(Object.class)

   // 根据名称来匹配需要拦截的方法

  .method(ElementMatchers.named("toString"))

  // 拦截方法调用,返回固定值

  .intercept(FixedValue.value("Hello World!"))

  // 产生字节码

  .make()

  // 加载类

  .load(getClass().getClassLoader())

  // 获得Class对象

  .getLoaded();

 

assertThat(dynamicType.newInstance().toString(), is("Hello World!"));