有关使用eclipse AST手动导出javadoc的麻烦

时间:2015-09-29 14:51:35

标签: java eclipse-jdt

我使用eclipse AST导出javadoc。我知道有一些方法可以实现。但不幸的是,由于某些原因,我不得不使用工具。

我有一些麻烦:

如何在typeDeclaration,methoDeclaration和fieldDeclaration(包含包名称,例如com.test.Test)中获取完整的类名而不是简单的名称?

修改 示例代码:

public class javaFileASTest {
    @Test
    public void test() {
        // read buffer from java source file
        // parse java source file and convert it into AST
        ASTParser astParser = ASTParser.newParser(AST.JLS8);
        astParser.setSource(buffer.toCharArray());
        astParser.setKind(ASTParser.K_COMPILATION_UNIT);

        CompilationUnit result = (CompilationUnit) (astParser.createAST(null));
        JavaFileAST javaFileAST = new JavaFileAST();
        result.accept(javaFileAST);

    }
}
public class JavaFileAST extends ASTVisitor {
    @Override
    public boolean visit(TypeDeclaration node) {
        // get super class 
        Type type = typeDeclaration.getSuperclassType();
        // type.toString() eg. Test
    }
}

有人帮助我吗?

1 个答案:

答案 0 :(得分:0)

默认界面仅提供简单名称而非完全限定名称的原因是简单名称是文本属性,而限定名称需要符号解析。

如果我的记忆有用,有两种方法可以做到这一点。

如果您只需要扫描的Java文件中顶级声明类型的FQN,请向访问者添加方法visit(PackageDeclaration)并阅读package foo.bar.goo语句,然后将包名附加到简单的类型名称。它是一个黑客,但它不需要符号解析。

如果您需要遇到的每种类型的FQN,则需要激活JDT解析器符号解析。请参阅ASTParser.setResolveBindings的文档。然后你可以打电话

ITypeBinding bind = type.resolveBinding();
String fqn = bind.getQualifiedName();

(免责声明:我是从记忆中写的,我没有在我面前有一个JDT项目)