代码对比
✕ Third-party bytecode parser
ClassReader reader = new ClassReader(
Files.readAllBytes(classFile));
reader.accept(visitor, 0);
✓ Java 24+
ClassModel model = ClassFile.of().parse(classFile);
model.methods().forEach(method ->
System.out.println(
method.methodName().stringValue()));
发现此代码有问题? 告诉我们。
为什么现代方式更好
受支持的 API
随 JDK 类文件格式一同提供和演进。
更少依赖
无需外部库即可处理常见字节码任务。
可组合模型
解析、构建和转换共用一个 API。
旧方式
ASM ClassReader
现代方式
Class-File API
自 JDK
24
难度
高级
JDK 支持
使用标准 API 解析类文件
可用
在 JDK 24 中最终定稿(JEP 484,2025 年 3 月)。
工作原理
Class-File API 在 JDK 24 中最终定稿,为 JVM 类文件提供受支持的模型和转换机制。它随 JDK 跟进类文件格式,使许多检查和生成任务不再需要第三方库。
相关文档
证明