Вопрос

Я хочу написать инструмент, который генерирует некоторый код, используя скомпилированный .class Файл как вход. В частности, я хочу прочитать из этого файла класса:

  • Методы с аннотациями
  • Параметры метода, с аннотациями

Файл входного класса, вероятно, будет относиться к нескольким типам, которые не находятся в группе класса инструмента. Это нормально, мне не нужно ничего делать с ними, просто нужно читать полностью квалифицированные имена типов как строки. Мне нужно получить некоторую информацию от аннотаций, но они будут в группе класса инструмента.

Есть ли библиотека, которую я могу использовать для этой цели? Было бы неплохо, если бы API был немного похож на API отражения, но это не должно быть.

Это было полезно?

Решение

КАК М http://asm.ow2.org/ Позволяет прочитать класс из потока файла/ввода без загрузки класса. Это позволяет вам видеть аннотации, которые не загружаются во время выполнения. Он также может быть использован для изменения кода/аннотаций/метода класса байта/метода и т. Д.

Другие советы

А Джавап инструмент Включен в JDK, вероятно, уже делает то, что вам нужно.

Тебе нужно посмотреть на две вещи Reflection API а также Decompiler

Я думаю, что вы могли бы использовать сканирование весеннего класса.

ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(true);
String basePackage = "org/springframework/samples/petclinic";
Set<BeanDefinition> components = provider.findCandidateComponents(basePackage);
for (BeanDefinition component : components) {
    System.out.printf("Component: %s\n", component.getBeanClassName());
}

Для получения дополнительной информации вы можете посмотреть на пружину док

я использую как м для выяснения всех методов.

Если у вас есть доступ к генерации файла .class, то Отражение API должен иметь возможность помочь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top