Я следил за несколькими руководствами по инструменту обработки аннотаций (APT) (например, 1и 2) в Интернете, и мне удалось заставить его работать в компиляторе/ время сборки и даже заработало в Eclipse.
Есть ли способ использовать APT во время выполнения, чтобы получить список типов (классов) с помощью моей аннотации.
Я написал что-то вроде:
@SupportedAnnotationTypes("com.domain.MyAnnotation")
public class MyAbstractProcessor extends AbstractProcessor {
public static Map patches = new HashMap();
@Override
public boolean process(final Set extends TypeElement> annotations, final RoundEnvironment roundEnvironment) {
// Get all classes that has the annotation
Set extends Element> classElements = roundEnvironment.getElementsAnnotatedWith(MyAnnotation.class);
// For each class that has the annotation
for (final Element classElement : classElements) {
patches.put(classElement, annotation);
Таким образом, MyAbstractProcessor.patches будет заполнен списком классов, использующих аннотацию. Благородная идея, за исключением того недостатка, что этот APT выполняется во время сборки, а не во время выполнения.
Возможно ли вообще использовать APT во время выполнения?
Или я использую не те фреймворки, чтобы получить то, что хочу?