我有一个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

最佳答案

假设您说的是org.eclipse.jdt.core.IFieldorg.eclipse.jdt.core.IAnnotation(“ Java模型”的一部分-不是AST),则应该这样做。遵循以下原则:

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


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

09-11 12:42