为什么打印节点的父节点会返回父节点+子节点?
给定起始位置,我可以通过将节点传递给 org.eclipse.jdt.core.dom.NodeFinder 类来查找节点。
NodeFinder node = new NodeFinder(root, m.getSourceStart(), m.getSourceEnd() - m.getSourceStart() + 1);
ASTNode n = node.getCoveredNode();
假设这个节点有一个父节点并获取该节点的父节点 n.getParent();
有谁知道为什么它打印出父节点和节点?
例如,我们知道 bar.foo()
中 foo()
的起点,因此如果我执行 System.Out.Println(n.getParent(). toString());
它打印 bar.foo()
。它不应该只打印 bar
吗?
预先感谢您的见解。
Given a start position, I can find a node by passing it to org.eclipse.jdt.core.dom.NodeFinder
class.
NodeFinder node = new NodeFinder(root, m.getSourceStart(), m.getSourceEnd() - m.getSourceStart() + 1);
ASTNode n = node.getCoveredNode();
Let assume that this node has a parent and get the node's parent n.getParent();
does anyone know why it prints out the parent node and the node?
For instance we know the starting point of foo()
in bar.foo()
so if I do System.Out.Println(n.getParent().toString());
it prints bar.foo()
. Shouldn't it print only bar
?
Thanks in advance for your insight.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您所看到的行为是预期的。
在此示例中:
bar
是一个SimpleName
,其父级是一个QualifiedName
,其中包含foo
和酒吧。因此父节点将包含多个 AST 节点,对其调用 toString 将打印出该节点的所有子节点。
The behavior you are seeing is expected.
In this example:
bar
is aSimpleName
and its parent is aQualifiedName
that contains bothfoo
andbar
. So the parent node will contain more than one AST node and callingtoString
on it will print out all of this node's children.