Как найти анонимный класс или локальный тип, используя JDT Java Search Engine? - PullRequest
3 голосов
/ 20 мая 2010

Я хочу программно получить модель анонимного класса или локально объявленного типа (например, экземпляр IType) из поисковой системы Java JDT, известной по полному имени. До сих пор я хорошо справлялся со следующим при поиске «обычных» типов, которые не были вложены в другие типы:

SearchPattern pattern = SearchPattern.createPattern(this.fullyQualifiedName, IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH);
IJavaSearchScope scope = SearchEngine.createWorkspaceScope();
SearchRequestor requestor = new TypeSearchRequestor(this);
SearchEngine searchEngine = new SearchEngine();
searchEngine.search(pattern, new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()}, scope, requestor, null);

Почему он работает для анонимных классов и локально объявленных типов, и как я могу это исправить? Я подозреваю, что я должен изменить SearchPattern, но не нашел ничего убедительного в JavaDoc.

Любой совет высоко ценится.

С уважением, Chris

Ответы [ 2 ]

0 голосов
/ 21 июня 2012

Если я правильно понял ваш вопрос, то это может помочь:

SearchEngine.searchAllTypeNames

Поиск всех типов верхнего уровня и типов элементов в заданной области.

Больше информации здесь: http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.jdt.doc.isv/guide/jdt_int_core.htm

0 голосов
/ 25 июля 2010

Что this.fullyQualifiedName содержит для анонимных или внутренних классов? Попробуйте использовать «$» в качестве разделителя области при создании полного имени класса, например:

a.b.c.Outer$Inner
a.b.c.Outer$1 // anonymous
...