【Java核心-进阶】运行时动态生成Java类

.

技术上可行的方式

生成源码文件 -> 编译源码 -> 加载类

方式1:javac 编译

可以用 ProcessBuilder 这个类启动 javac 进程,编译源码文件

 

方式2:Java Compiler API 编译

JDK中的 Java Compiler API 提供了与 javac 对等的编译能力。(示例:InMemoryJavaCompiler

 

直接生成字节码 -> 加载类

一般通过字节码操作工具和类库来更改Java Class的字节码。

流行的工具有 ASMJavassistcglibByte Buddy 等。

很多工具/框架中的动态代理实现中就有用到这些工具。如,Spring框架内置了 cglib

 

字节码 -> Class

将字节码转换为 Class 发生在类加载过程中(《Java类加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值