Вы можете использовать API JDT SearchEngine
для получения ссылок на конкретный узел АСТ.
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { yourProject });
//IJavaSearchScope scope = SearchEngine.createWorkspaceScope(); // Use this if you dont have the IProject in hand
SearchPattern searchPattern = SearchPattern.createPattern(field,
IJavaSearchConstants.REFERENCES);
SearchRequestor requestor = new SearchRequestor() {
@Override
public void acceptSearchMatch(SearchMatch match) {
System.out.println(match.getElement());
}
};
SearchEngine searchEngine = new SearchEngine();
searchEngine.search(searchParttern,
new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope,
requestor, new NullProgressMonitor());
Я не проверял, но вы можете попытаться предоставить область действия как элемент IType java.
IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {iType});
Для получения более подробной информации используйте приведенную ниже ссылку и перейдите к разделу «Использование поисковой системы Java».
http://help.eclipse.org/indigo/index.jsp?topic=/org.eclipse.jdt.doc.isv/guide/jdt_int_core.htm
Edit: Если зависимости будут разрешены, вы можете использовать следующий код, чтобы получить Java элемент из VariableDeclarationNode
:
IVariableBinding binding = variableDeclarationNode.resolveBinding()
IJavaElement variableElement = binding.getJavaElement();
Я не; т иметь IJavaElement и I Я запускаю это из затмения. – bhantol
ответ обновляется с тем, как получить элемент java. –