我使用下面的代码来获取给定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);
}
}
}
}
答案 0 :(得分:3)
IPackageFragment可以是IFiles,IFolders或IStorages的实例。一种可能的解决方案:
if (pkg != null && !isEmpty(pkg.getElementName()) && pkg instanceof IPackageFragment) {
if (!(pkg instanceof IFolder)) {
allPackages.add((IPackageFragment) pkg);
}
}