2016-10-05 70 views
1

我有一個IAnnotation實例,如果IAnnotation#getElementName()返回簡單名稱,我怎樣才能獲得註釋的全限定類型名稱?如何使用JDT AST獲取註釋的類型?

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

回答

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維數組提取限定名。