java - 如何使用 JDT 获取未设置完整代码的语句

标签 java eclipse eclipse-jdt

如何在没有设置完整代码(没有设置类和方法/构造函数)的情况下获取 AST 节点的语句。
例如,我设置了这样的代码:

for(int i=0;i<4;i++){
    System.out.println(i);
}

我已经创建了简单的代码,但是它不起作用:

ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setSource("for(int i=0;i<4;i++) {\nSystem.out.println(i);}".toCharArray());
parser.setKind(ASTParser.K_COMPILATION_UNIT);
final CompilationUnit cu = (CompilationUnit) parser.createAST(null);
cu.accept(new ASTVisitor() 
{
    public boolean visit(ForStatement node)
    {
        System.out.println (node.getExpression());
        return true;
    }
});

最佳答案

我建议你可以通过添加如下代码来实现一些技巧:

String statement="for(int i=0;i<4;i++) {\nSystem.out.println(i);}";
parser.setSource(("class fo{\nvoid foo(){\n" + statement + "\n}\n}").toCharArray());
parser.setKind(ASTParser.K_COMPILATION_UNIT);

希望能回答您的问题。

关于java - 如何使用 JDT 获取未设置完整代码的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34433679/

相关文章:

java - 使用 java websocket API 和 Javascript 上传文件

java - BeanValidation : Messages from ValidationMessages. 属性

java - jvm 版本 1.4.2_03 不适合此产品。 1.5或更高是必需的问题

java - Eclipse 如何生成 setter 和 getter?

command-line - 是否可以从命令行运行 Eclipse JDT 编译器,如 javac?

java - eclipse jdt 编译器中不必要的强制转换警告

Java boolean 条件while循环似乎忽略了if语句?

java - Apache Qpid/Redhat MRG - 以可移植的方式跨不同系统发送日期

java - 列出所有具有完全限定名称的子类

antlr - 将 COBOL AST 转换为 Java 源文件