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