У меня есть пользовательская аннотация, как показано ниже.Java Метод аннотации Метод возвращает
@customelement(folder = "/path/")
public testMethod() {
}
Как я могу извлечь значение папки т.е.. "/ Путь /", используя AbstractProcessor ниже?
public class CompileTimeAnnotationProcessor extends AbstractProcessor {
@Override
public boolean process(Set<? extends TypeElement> annotations,
RoundEnvironment roundEnv) {
Set<? extends Element> elements = roundEnv.getElementsAnnotatedWith(CustomAnnotation.class);
for(Element te : elements){
for (Element e : te.getEnclosedElements()) {
if (e.getSimpleName().toString().equals("folder")) {
//Here fetch method return value
}
}
}
return true;
}
}
Вы пытаетесь создать пользовательский обработчик аннотации или хотите, чтобы значения отражались во время выполнения? Если это первый, как вы его компилируете? Я когда-либо видел/использовал обработчик аннотации при компиляции источника с использованием ['JavaCompiler'] (http://docs.oracle.com/javase/7/docs/api/javax/tools/JavaCompiler.html). – Makoto
@Makoto вы можете запустить javac-компилятор с соответствующими аргументами (см.: -proc, -processorpath, -s, -processor), чтобы включить и настроить обработку аннотаций во время стандартной компиляции javac. Я думаю, что это типичный способ использования обработчиков аннотаций. –