我想以编程方式从JDT Java搜索引擎中获取匿名类或本地声明的类型(即IType的实例)的模型,该模型以全限定名闻名。到目前为止,在搜索未嵌套在其他类型中的“常规”类型时,我在以下方面做得很好:

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中没有发现任何结论。

任何建议都受到高度赞赏。

问候,
克里斯

最佳答案

this.fullyQualifiedName包含什么用于匿名或内部类?
构建类的完全限定名称时,请尝试使用“ $”作为范围分隔符,如下所示:

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

10-05 19:49