如何使用JDT AST获取注释类型?

时间:2016-10-05 13:48:11

标签: java annotations abstract-syntax-tree eclipse-jdt

我有一个IAnnotation实例,如果IAnnotation#getElementName()返回简单名称,我怎样才能获得注释的完全限定类型名称?

    IAnnotation ruleAnnotation = field.getAnnotation("Rule");
    String fullQualifiedName = ???
    if (fullQualifiedName.equals("org.junit.Rule")){
        ...
    }

我找到了这个答案,但这是一个不同的用例:     How to determine if a class has an annotation using JDT, considering the type hierarchy

1 个答案:

答案 0 :(得分:3)

假设你谈到org.eclipse.jdt.core.IFieldorg.eclipse.jdt.core.IAnnotation(“Java模型”的一部分 - 而不是AST),你应该做s.t.沿着这些方向:

IAnnotation ruleAnnotation = field.getAnnotation("Rule");
IType declaringType = field.getDeclaringType();
String elementName = ruleAnnotation.getElementName();
String[][] fullyQualifiedName = declaringType.resolveType(elementName);

请参阅IType.resolveType(String)的javadoc,以便从2-dim数组中提取限定名称。