我正在尝试使用Eclipse JDT的AST解析java文件。 ASTVisitor提供了一个很好的API来遍历所有节点并使用我们想要的节点。现在我想要的是,我们可以转到目标节点,比如类型MethodDeclaration
或该类型的所有节点,而不是遍历所有节点吗?因为如果必须在整个包中获取特定类型的所有节点,这会减少时间。提前谢谢。
答案 0 :(得分:3)
查找给定类型的所有节点 遍历。 ASTVisitor
适用于此确切的任务。
如果您担心自己感兴趣的节点不必要遍历 ,只需从相应的false
方法返回visit()
,访问者就不会进入儿童当前节点。
如果你只想解决几个节点(例如,通过名称模式识别),那么执行搜索(依赖于索引)可能会更快,但这可能会得到回报只有当可以完全跳过大量文件时才能。
最后,正如你提到MethodDeclaration
:也许你甚至不需要AST,但Java模型(重量更轻)足以完成你的任务?