2012-12-11 102 views
1

我使用下面的代码来获取给java项目中的包列表。但它也包含在列表中的文件夹。请建议一种忽略文件夹的方式。获取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); 
       } 
      } 
     } 
    } 

回答

3

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

if (pkg != null && !isEmpty(pkg.getElementName()) && pkg instanceof IPackageFragment) { 
    if (!(pkg instanceof IFolder)) { 
     allPackages.add((IPackageFragment) pkg); 
    } 
}