我正在尝试使用Java编写注解处理器。该注解处理器需要识别以下示例中的已注释嵌套类。我将首先处理已注释类,然后处理其内部注释。这是在编译时执行的,并且我没有有关正在处理的类的现有知识。Foo可能有多个嵌套类。如何处理所有这些嵌套类的注释。
@MyAnnotation(value="Something important")
public class Foo
{
private Integer A;
@MyMethodAnnotation(value="Something Else")
public Integer getA() { return this.A; }
@MyAnnotation(value="Something really important")
private class Bar
{
private Integer B;
@MyMethodAnnotation(value="Something Else that is very Important")
public Integer getB() { return this.B }
}
}
在处理过程中,我该如何访问嵌套的Bar类、它的注解'MyAnnotation'和它的'MyMethodAnnotation'? 以下代码仅打印有关类Foo的信息。如何处理有关Bar的信息?
for (Element element : env.getElementsAnnotatedWith(MyAnnotation.class)) {
if ( element.getKind().equals(ElementKind.CLASS) )
{
System.out.println(element.getKind().name() + " " + element.getSimpleName() );
processInnerClassElement(element);
}
else
{
System.out.println(element.getKind().name() + " " + element.getSimpleName() );
}
}
...
private void processInnerClassElement(Element element)
{
for (Element e : element.getEnclosedElements() )
{
if ( e.getKind().equals(ElementKind.CLASS) )
{
System.out.println(e.getKind().name() + " " + e.getSimpleName() );
processInnerClassElement(e);
}
else
{
System.out.println(e.getKind().name() + " " + e.getSimpleName() );
}
}
}