在我的程序中,我动态获取.java文件的名称。在这个文件中我需要找到所有方法,foreach方法也是所有参数(也带有它们的注释)。
我在这里阅读了讨论并找到了这个https://code.google.com/p/javaparser/ javaparser,看起来很容易使用,但问题是,它只适用于1.5。
比你提到的,Java 1.6已经有了内置的解析器(javax.lang.model)。但我无法弄清楚它是如何运作的。你知道它的任何好的教程/例子吗?
你知道解析java源文件的其他方法吗?
答案 0 :(得分:3)
如何使用Doclet API?
通常,此API用于bat文件,但您可以按以下方式以编程方式调用。
重要:此API不存在于rt.jar(JRE)中,而是存在于tools.jar(JDK)中。所以你需要将tool.jar添加到classpath中。
import com.sun.javadoc.ClassDoc;
import com.sun.javadoc.Doclet;
import com.sun.javadoc.MethodDoc;
import com.sun.javadoc.RootDoc;
import com.sun.tools.javadoc.Main;
public class DocletTest {
public static void main(String[] args) {
Main.execute("", Analyzer.class.getName(), new String[] {"path/to/your/file.java"});
}
public static class Analyzer extends Doclet {
public static boolean start(RootDoc root) {
for (ClassDoc classDoc : root.classes()) {
System.out.println("Class: " + classDoc.qualifiedName());
for (MethodDoc methodDoc : classDoc.methods()) {
System.out.println(" " + methodDoc.returnType() + " " + methodDoc.name() + methodDoc.signature());
}
}
return false;
}
}
}
答案 1 :(得分:2)
再看一下javaparser project。它已更新为支持所有现代Java版本。
Doclet API非常难以使用,并且记录严重。它将要么消失,要么被更好的东西替换,hopefully even in Java 1.9。