import com.sun.javadoc.ClassDoc;
import com.sun.javadoc.FieldDoc;
import com.sun.javadoc.MethodDoc;
import com.sun.javadoc.RootDoc;
import com.sun.javadoc.ExecutableMemberDoc;
import com.sun.javadoc.ParamTag;
import com.sun.tools.javadoc.Main;
public class ParseClass {
private static RootDoc rootDoc;
public static boolean start(RootDoc root) {
rootDoc = root;
return true;
}
public static void main(String[] args) {
String beanFilePath = "E:\workspaces\stud\demo\src\main\java\com\example\demo\form\HelloForm.java";
Main.execute(new String[] { "-doclet", ParseClass.class.getName(), "-docletpath",
ParseClass.class.getResource("/").getPath(), "-encoding", "utf-8", "-classpath", "E:\workspaces\stud\demo\target\classes;", beanFilePath });
ClassDoc[] classes = rootDoc.classes();
if (classes == null || classes.length == 0) {
return;
}
for (ClassDoc classDoc : classes) {
System.out.println(Arrays.asList(classDoc.commentText()));
FieldDoc[] fields = classDoc.fields(false);
for (FieldDoc field : fields) {
System.out.println(Arrays.asList(field.name(), field.type().typeName(), field.commentText()));
}
MethodDoc[] methods = classDoc.methods(false);
for (MethodDoc method : methods) {
System.out.println(Arrays.asList(method.name(), method.returnType().typeName(), method.commentText()));
}
printMembers(classDoc.constructors());
printMembers(classDoc.methods());
}
}
static void printMembers(ExecutableMemberDoc[] mems) {
for (int i = 0; i < mems.length; ++i) {
ParamTag[] params = mems[i].paramTags();
System.out.println(mems[i].qualifiedName());
for (int j = 0; j < params.length; ++j) {
System.out.println(" " + params[j].parameterName()
+ " - " + params[j].parameterComment());
}
}
}
}
在写这段代码前,必须把%JAVA_HOME%/lib/tools.jar 放到classpath



