使用Eclipse的JDT在项目中查找类的有效方法是什么?

时间:2011-07-28 20:54:26

标签: eclipse-plugin eclipse-jdt

Eclipse的SearchEngine类有很多搜索方法,包括searchsearchAllTypeNames等各种风格。searchAllTypeNames似乎是围绕在包中查找类而定的。在项目中查找用户定义的类的好策略是什么? (通过用户定义的类,我指的是用户编写了驻留在该项目中的源代码的类,而不是从其他项目,外部jar,系统库等导入的类。)

  1. search与自定义IJavaSearchResultCollector一起使用。
  2. 获取项目中的所有包(使用search?),然后遍历包,使用searchAllTypeNames收集类。
  3. 手动遍历AST。
  4. 别的。
  5. 注意,我并不需要“最有效”的方法来收集课程。我更喜欢易于编码且合理有效的东西,这些东西需要大量代码才能更有效。

    我欢迎使用SearchEngine方法的任何相关的一般指导。我觉得很多选项令人费解。

1 个答案:

答案 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
                            }
                        }
                    }
                }
            }
        }
    }

我建议使用这样的循环,而不是使用搜索引擎,因为我知道使用搜索引擎只能查找源类型。