有一种简单的方法可以使用Eclipse JDT检查ICompilationUnit中是否存在注释?
我尝试执行下面的代码,但我必须为超类做同样的事情。
IResource resource = ...;
ICompilationUnit cu = (ICompilationUnit) JavaCore.create(resource);
// consider only the first class of the compilation unit
IType firstClass = cu.getTypes()[0];
// first check if the annotation is pressent by its full id
if (firstClass.getAnnotation("java.lang.Deprecated").exists()) {
return true;
}
// then, try to find the annotation by the simple name and confirms if the full name is in the imports
if (firstClass.getAnnotation("Deprecated").exists() && //
cu.getImport("java.lang.Deprecated").exists()) {
return true;
}
我知道可以解析与ASTParser的绑定,但是我找不到检查是否存在注释的方法。 有没有简单的API来做这样的事情?
答案 0 :(得分:2)
是的,您可以使用ASTVisitor
并覆盖您需要的方法。因为,有一些类型的注释:MarkerAnnotation
,NormalAnnotation
等
ASTParser parser = ASTParser.newParser(AST.JLS4);
parser.setSource(charArray);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
final CompilationUnit cu = (CompilationUnit)
parser.createAST(null);
cu.accept(new ASTVisitor(){..methods..});
例如正常注释:
@Override
public boolean visit(NormalAnnotation node) {
...
}
不过,请注意下面的差异:
import java.lang.Deprecated;
...
@Deprecated
和
@java.lang.Deprecated