Я использую метод process()
, из класса, который наследует от AbstractProcessor
, чтобы получить имена элементов, которые используют мою аннотацию.Как сохранить элементы, которые используют мою аннотацию?
Как сохранить список этих имен, чтобы я мог использовать их в своих примерах. main()
способ?
@edit У меня есть класс ClassList
, который будет хранить имена классов, которые используют аннотацию @CustomAnnotation
public class ClassList {
private static final List<String> classList= new LinkedList<>();
public static List<String> getClassList() {
return classList;
}
public static void addList(String name) {
classList.add(name);
}
}
Здесь у меня есть интерфейс @CustomAnnotation
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomAnnotation{
}
Вот об осуществлении класс, который будет обрабатывать аннотации
@SupportedAnnotationTypes("com.example.CustomAnnotation")
@SupportedSourceVersion(SourceVersion.RELEASE_8)
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 e : elements) {
//adds each name to the list
ClassList.addList(e.getSimpleName().toString());
}
//prints the array
System.out.println(Arrays.toString(ClassList.getClassList().toArray(new String[ClassList.getClassList().size()])));
return true;
}
}
Затем я использую аннотацию
@CustomAnnotation
public class AnnotatedClass {
}
@CustomAnnotation
public class TestClass {
}
Теперь, когда у меня есть main()
метод, который я хотел бы получить доступ, что классы.
public static void main(String[] args) {
System.out.println(ClassList.getClassList().size());
}
Когда я чистый и построить его действительно печатает массив в методе process()
, но затем я запустить основную программу список пуст. Как получить доступ к этому списку в основной программе?
Ваш вопрос непонятен. Измените его более подробной информацией о своем фактическом коде и о том, чего вы хотите достичь. – Mxsky
Пожалуйста, постарайтесь сформулировать свои вопросы, добавить больше кода или дать нам больше контекста –
Ok Я отредактировал мое сообщение с некоторым кодом – Humberd