Я работаю над процессором аннотаций и передаю своему классу параметр, представляющий аннотацию для управления, что-то вроде: Class<? extends @interface> annotationClass
К сожалению, это не компилируется. Единственный способ, которым я могу скомпилировать, это использовать необработанный тип Class
, но таким образом, когда я пытаюсь что-то вроде
roundEnvironment.getElementsAnnotatedWith(annotationClass)
, возвращается тип Object
вместо javax.lang.model.element.Element
public Map<ClassName, List<ElementInfo>> initClassesToGenerate(Class annotationClass, ElementKind elementKind, RoundEnvironment roundEnvironment) {
Map<ClassName, List<ElementInfo>> result = new HashMap<>();
// init map
for (Element annotatedElement : roundEnvironment.getElementsAnnotatedWith(annotationClass)) {
TypeElement typeElement = (TypeElement) annotatedElement;
ClassName className = ClassName.get(typeElement);
if (!result.containsKey(className)) {
result.put(className, new ArrayList<>());
}
}
return result;
}