1

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
4

1 回答 1

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

    }
}

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

于 2012-11-26T05:56:53.960 回答