org.eclipse.jdt.core.dom.ASTNode的子级

Joe*_*oel 5 java eclipse eclipse-jdt

使用Eclise JDT,我需要检索任何ASTNode的子代。我可以在某处使用实用程序方法吗?

我现在唯一想到的方法是子类化ASTVisitor并手动处理每种节点以找到其子节点。但是研究每种节点类型需要大量工作。

Dee*_*zad 5

我将从查看ASTView插件的源开始,因为那也做同样的事情。

根据中的代码

  • org.eclipse.jdt.astview.views.ASTViewContentProvider.getNodeChildren(ASTNode)
  • org.eclipse.jdt.astview.views.NodeProperty.getChildren()

所需的代码应如下所示

public Object[] getChildren(ASTNode node) {
    List list= node.structuralPropertiesForType();
    for (int i= 0; i < list.size(); i++) {
        StructuralPropertyDescriptor curr= (StructuralPropertyDescriptor) list.get(i);
            Object child= node.getStructuralProperty(curr);
        if (child instanceof List) {
                return ((List) child).toArray();
        } else if (child instanceof ASTNode) {
            return new Object[] { child };
            }
        return new Object[0];
    }
}
Run Code Online (Sandbox Code Playgroud)