Разбор class-файлов с помощью стандартного API
Используйте стандартный Class-File API для разбора и преобразования class-файлов.
Сравнение кода
✕ 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
Поставляется и развивается вместе с форматом class-файлов JDK.
Меньше зависимостей
Решает распространённые задачи с байт-кодом без внешней библиотеки.
Компонуемые модели
Разбор, построение и преобразование используют единый API.
Старый подход
ASM ClassReader
Современный подход
Class-File API
Начиная с JDK
24
Сложность
Продвинутый
Поддержка JDK
Разбор class-файлов с помощью стандартного API
Доступно
Окончательно утверждено в JDK 24 (JEP 484, март 2025).
Как это работает
Class-File API, окончательно утверждённый в JDK 24, предоставляет поддерживаемые модели и преобразования для class-файлов JVM. Он развивается вместе с форматом class-файлов в JDK и во многих задачах анализа и генерации устраняет необходимость в сторонних библиотеках.
Связанная документация
Доказательство