如何使用JavaParser解析方法或任何其他有效表达式

时间:2012-11-26 05:49:34

标签: java parsing javaparser

JavaParser是一个java源代码解析工具。我阅读了这些文档,但发现它只能解析完整java类的源代码,如:

public class X {
    public void show(String id) {
        Question q = Quesiton.findById(id);
        aaa.BBB.render(q);
    }
}

但我只想解析其中的一部分,例如方法声明:

public void show(String id) {
    Question q = Quesiton.findById(id);
    aaa.BBB.render(q);
}

怎么做或有可能吗?如果没有,是否还有其他工具可以做到这一点?


更新

实际上我想解析java中的任何有效表达式,所以我可以使用JavaParser轻松完成这个:

CompilationUnit unit = JavaParser.parse(codeInputStream);

addField(unit, parseField("public String name"));  // not possible now

1 个答案:

答案 0 :(得分:2)

我看到你可以在虚拟类中包含该方法并像往常一样解析它。对于您提供的示例,请将其包含在内:

public class DUMMY_CLASS_FOO {

    // The string you're trying to parse (method or whatever)

}

然后你像往常一样解析它,并在解析时忽略你的虚拟类。

<强>更新

对于您提供的更新,您可以尝试抓住

如果之前的机箱没有这样做,请将其括起来:

public class DUMMY_CLASS_FOO {

    public void DUMMY_METHOD_FOO {

        // Anything here

    }
}

您也可以搜索访问级别修饰符(公共,私有等),如果找到,请执行第一个解决方案。如果没有找到,请做另一个。