0
開始位置が与えられると、ノードをorg.eclipse.jdt.core.dom.NodeFinder
クラスに渡すことによってノードを見つけることができます。ノードの印刷親ノードが親ノードと子ノードを返すのはなぜですか?
NodeFinder node = new NodeFinder(root, m.getSourceStart(), m.getSourceEnd() - m.getSourceStart() + 1);
ASTNode n = node.getCoveredNode();
は、それが親ノードとノードを出力し、なぜこのノードが親を持っていることを前提とし、ノードの親n.getParent();
を取得し、誰もが知っているしましょうか?
たとえば、foo()
の開始点がbar.foo()
であることがわかっているので、System.Out.Println(n.getParent().toString());
を入力すると、bar.foo()
が印刷されます。 bar
だけを印刷してはいけませんか?
あなたの洞察力を事前に感謝します。
ありがとうございました。それで、修飾された名前にアクセスする方法はありますか? – fabricemarcelin
修飾名は "foo.bar"です。私はあなたが "バー"を与えられたときに "foo"だけにアクセスするように求めていると思います。答えは「はい」です。 "bar"で始める場合は、その親を取得する必要があります。親はQualifiedName型です。次に、 "getQualifier()"を呼び出す必要があります。 "foo.bar.baz.bop"の大文字小文字を処理するには、これを再帰的に呼び出す必要があります。 –
あなたの洞察をいただきありがとうございます。 getQualifierは本当に役に立ちました。 ASTNode n = node.getCoveredNode()。getParent(); if(n instanceof Expression){ 式exp =(式)n; if(exp instanceof MethodInvocation){ MethodInvocation m =(MethodInvocation)exp; System.out.println(Signature.getQualifier(m.toString())); }} – fabricemarcelin