Eclipse的SearchEngine
类有很多搜索方法,包括search
,searchAllTypeNames
等各种风格。searchAllTypeNames
似乎是围绕在包中查找类而定的。在项目中查找用户定义的类的好策略是什么? (通过用户定义的类,我指的是用户编写了驻留在该项目中的源代码的类,而不是从其他项目,外部jar,系统库等导入的类。)
search
与自定义IJavaSearchResultCollector
一起使用。search
?),然后遍历包,使用searchAllTypeNames
收集类。注意,我并不需要“最有效”的方法来收集课程。我更喜欢易于编码且合理有效的东西,这些东西需要大量代码才能更有效。
我欢迎使用SearchEngine
方法的任何相关的一般指导。我觉得很多选项令人费解。
答案 0 :(得分:1)
由于您的搜索条件非常具体,因此最好的办法是遍历Java模型以找到您的类型。
这是一个可以使用的小循环:
IJavaProject proj = getJavaProject();
for (IPackageFragmentRoot root : prog.getAllPackageFragmentRoots()) {
if (!root.isReadOnly()) {
for (IJavaElement child : root.getChildren()) {
if (child.getElementType() == IJavaElement.PACKAGE_FRAGMENT) {
IPackageFragment frag = (IPackageFragment) child;
for (ICompilationUnit u : frag.getCompilationUnits()) {
for (IType type : u.getAllTypes()) {
if (type.isClass() || type.isEnum()) {
// do something
}
}
}
}
}
}
}
我建议使用这样的循环,而不是使用搜索引擎,因为我知道使用搜索引擎只能查找源类型。