我开发了eclipse插件,对于任何给定的java项目,都以包结构的形式创建GUI。我已成功为不同的java项目运行我的插件。 现在,我认为应该在一些开源项目中尝试我的代码,因此,我下载了JDOM Framework。 但是,我发现JDOM源代码具有这种结构。
JDOM - >贡献 - > src - > java - >组织 - > jdom2 ......
我假设项目总是低于结构
项目名称 - > Src - >包裹名称在这里开始.....
我使用下面的代码
加载类IPackageFragment[] packages = javaProject.getPackageFragments();
for (IPackageFragment mypackage : packages) {
if (mypackage.getKind() == IPackageFragmentRoot.K_SOURCE) {
for (ICompilationUnit unit : mypackage.getCompilationUnits()) {
// unit.getPath().toString() give me path, but how to extract only class name with package
// save it in to MAP with Package as key
}
}
}
现在,我想显示只有包名的类,因此,我删除前两个字符串(PROJECT NAME,SRC),但对于JDOM Framework,情况并非总是这样。
因此,如何使用上面的方法只获取包名和类名?或者我应该使用不同的机制吗?
答案 0 :(得分:1)
单独查看目录结构似乎是一种非常容易出错的方法。谁知道目录树有多深?如果您扫描Java源文件,您应该能够构建一个在文件开头找到包声明的阅读器。如果没有,你不需要担心。我是否需要说您可以将包名称存储在HashSet中以避免重复的包声明?
答案 1 :(得分:1)
ICompilationUnit
有findPrimaryType
方法:
IType primaryType = unit.findPrimaryType();
且IType
有getFullyQualifiedName()
:
String name = primaryType.getFullyQualifiedName();