Чтение байт-кода из AnnotationProcessor

Возможный дубликат:
Подключение к компиляторам Java

Редактировать - это похоже на вставку в компиляторы Java


Я хотел бы реализовать AnnotationProcessor для использования с apt инструмент, который будет вызываться после компиляции класса в байт-код, который может читать и изменять байт-код.

Причина для этого заключается в том, что я хочу перевести аннотированные методы на другой язык и заменить java-методы заглушками, которые вызывают переведенные версии.

Тем не менее AnnotationProcessorEnvironment Интерфейс предоставляет только методы для генерации новых классов, а не для чтения файла класса, который был сгенерирован в предыдущем раунде.

API инструментария делает что-то похожее на то, что я хочу, но только во время выполнения. Я ищу способ сделать это во время компиляции.

1 ответ

Решение

Я посмотрел, когда я хотел сделать некоторые манипуляции в компиляторе, но в итоге использовал постпроцессор.

Вы можете манипулировать абстрактным синтаксическим деревом (AST), используя APT, но только с помощью специфичных для компилятора хаков. Если вам нужен пример того, как это делается, Project Lombok делает это с Sun javac и Eclipse-компиляторы. В настоящее время нет лучшего способа.

Другие вопросы по тегам