我有一个ASTVisitor实现类,其中(除其他外)使用此方法:
@Override
public boolean visit(final ImportDeclaration node) {...}
有没有办法找出进口声明是否来自 ASTVisitor 正在经历的项目的另一个包,或者它是否来自 .jar = 库内容?
我尝试了node.resolveBinding().isSynthetic(),但它似乎永远不会是合成的,尽管我从库中导入了。
好的,解决方案是将节点解析为 IBinding,然后解析为 ITypeBinding 并调用 isFromSource():
IBinding b = node.resolveBinding();
if (b instanceof ITypeBinding && !((ITypeBinding) b).isFromSource()) {
//do stuff
}