我只想知道使用org.eclipse.jdt.core.dom.ASTParser是否可以解析一个java函数?
这就是我尝试的方法:我将函数的代码传递给ASTParser.setSource(char [] s),如下所示:
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(unit); //set source
CompilationUnit cu = (CompilationUnit) parser.createAST(null /* IProgressMonitor */); // parse
List list = node.types();
for(int i = 0; i < list.size(); i++){
ASTNode typeNode = (ASTNode) list.get(i);
System.out.println(ASTNode.nodeClassForType(typeNode.getNodeType()));
}
但是我看到类型列表中没有任何内容(size = 0)。
请建议。 谢谢。 法希姆
答案 0 :(得分:1)
只是一个小错字,在List list = node.types();
行中它应该是List list = cu.types();
。您无法仅传递功能。它需要是有效的Java编译单元,因此它必须具有类型定义。确保用类包装函数。任何课程。它应该工作得很好。
如果它不起作用,请记住您可以要求cu.getProblems()
并查看失败的位置。