1

我正在使用下面的代码来获取给 java 项目中的包列表。但它也包括列表中的文件夹。请提出一种忽略文件夹的方法。

final IPackageFragmentRoot[] packageFragmentRootArray = workingJavaProject.getJavaProject().getAllPackageFragmentRoots();

for (final IPackageFragmentRoot packageFragmentRoot : pkgFrgmRoots) {
        if (!packageFragmentRoot.isArchive()) {
            for (final IJavaElement pkg : packageFragmentRoot.getChildren()) {
                if (pkg != null && !isEmpty(pkg.getElementName()) && pkg instanceof IPackageFragment) {
                    allPackages.add((IPackageFragment) pkg);
                }
            }
        }
    }
4

1 回答 1

3

IPackageFragment 可以是 IFiles、IFolders 或 IStorages 的实例化。一种可能的解决方案:

if (pkg != null && !isEmpty(pkg.getElementName()) && pkg instanceof IPackageFragment) {
    if (!(pkg instanceof IFolder)) {
        allPackages.add((IPackageFragment) pkg);
    }
}
于 2012-12-24T17:16:26.250 回答