2012-12-10 3 views
3

Я пишу обработчик аннотации и мне нужно создать экземпляр обрабатываемого класса.Как создать экземпляр класса с обработкой аннотации?

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

К сожалению, когда я пытаюсь создать экземпляр, у меня есть ClassNotFoundException, который кажется логичным для меня, поскольку обработка происходит перед раундом компиляции.

В настоящее время я пишу xml-файл, содержащий документацию, возможно, есть пост-процессор аннотации или что-то подобное?

У вас есть идеи обходной путь?

+1

Вы можете уточнить, почему * вы пытаетесь его создать? Вы никогда не сможете создать экземпляр класса, который вы компилируете, поэтому, возможно, лучший вопрос: «Как я могу сделать X * без * создания экземпляров этих классов?» – Brian

+0

Я хочу создать пример сообщения json, которое может быть создано аннотированной службой – poussma

+0

Ну, у вас есть доступ к полям и их типам в вашем обработчике аннотаций (исходные метаданные). Вам не нужно иметь явные значения в вашем примере JSON, чтобы он был хорошим примером, так что, возможно, вы можете просто создать строку JSON с этой информацией? Другим вариантом может быть использование BCEL для динамического создания класса из исходных метаданных для использования в качестве временного владельца места для генерации JSON. Прошло некоторое время с тех пор, как я работал над обработчиком аннотаций, поэтому я не могу предложить многое из-за кода, извините. – Brian

ответ

0

Ну, определенно, мы не можем получить доступ к обрабатываемому классу, потому что в то же время он составляет , составляющий.

И нет возможности запустить обработчик аннотации после раунда компиляции.

Тогда я искал в мавена и определить фазу: process-classes

Он выполнен только после компиляции успеха, поэтому он идеально подходит для моих потребностей. На этом этапе я запускаю класс java, который читает XML-файл, который я создал во время обработки аннотации. На данный момент я могу получить доступ ко всему!

HIH

 Смежные вопросы

  • Нет связанных вопросов^_^