Получить пакет childs из пакета - PullRequest
1 голос
/ 28 ноября 2011

Как в Eclipse получить дочерние пакеты для пакета?

Рассмотрим этот пример:

+ org.stack
    org.stack.test
        - StackTest.java
    - Stack.java

Когда мы выполняем IPackageFragment.getChildren () в org.stack, Eclipse JDT возвращает только единицу компиляции (файлы Java)!Но мне нужны все дочерние элементы пакета: все ICompilationUnits и все пакеты.

В этом примере, когда я применяю IPackageFragment.getChildren () в org.stack , я хочу org.stack.test и ICompilationUnit Stack.java ...

Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 28 ноября 2011

IPackageFragment не является правильной отправной точкой. Вы должны спросить более высокий уровень для пакетов:

IPackageFragment: один пакет. Он содержит ICompilationUnits или IClassFiles, в зависимости от того, имеет ли тип IPackageFragmentRoot источник типа или двоичный тип. Обратите внимание, что IPackageFragment не организован как родительские дочерние элементы. Например. net.sf.a не является родителем net.sf.a.b. Это два независимых потомка одного и того же IPackageFragmentRoot.

Посмотрите эту статью о AST

0 голосов
/ 28 ноября 2011

вам нужно сделать это рекурсивным способом.

вот какой-то псевдокод

findAllClasses(package, classesCollection) {
    for(Class c: package.getClasses)
        classesCollection.add(c.getResourcePath)
    if(package.hasChildPackages)
        for(Package p: packages)
            findAllClasses(p, classesCollection)
}
...