[JAVA] 读取Java源文件中的注释

因“注释信息”只存在.java文件中,而不在.class文件中,故只有通过解析*.java文件来获取:
1.通过正则表达式
2.通过词法分析、语法分析
3.通过javadoc或其它(JDT、JavaParser、Roaster等)包含词法分析、语法分析的工具,IDE、代码格式化等这类工具一般都包含有

下面是通过javadoc的Doclet实现的
实际测试环境为:java 8

注意:需要在工程中加载jdk中的包$JAVA_HOME/lib/tools.jar

package uuo.tools;

import java.util.ArrayList;

import com.sun.javadoc.ClassDoc;
import com.sun.javadoc.FieldDoc;
import com.sun.javadoc.MethodDoc;
import com.sun.javadoc.RootDoc;

/**
 * 类说明:打印类及其字段、方法的注释
* 使用javadoc实现
* 需要在工程中加载jdk中的包$JAVA_HOME/lib/tools.jar */ public class Doclet { /** * 测试 */ public static void main(String[] args) { //java源文件的路径 ArrayList sources=new ArrayList<>(); sources.add("../uuo/example/Example1.java"); sources.add("../uuo/example/Example2.java"); //打印 println(sources); } /** * 打印类及其字段、方法的注释 * * @param sources java源文件路径 */ public static void println(ArrayList sources) { ArrayList list=new ArrayList<>(); list.add("-doclet"); list.add(Doclet.class.getName()); list.addAll(sources); com.sun.tools.javadoc.Main.execute(list.toArray(new String[list.size()])); StringBuilder buffer=new StringBuilder(); ClassDoc[] classes=Doclet.root.classes(); for(ClassDoc classDoc:classes) { buffer.append(classDoc.name()).append('\n'); buffer.append('\t').append(classDoc.commentText()).append('\n'); buffer.append('\t').append("字段").append('\n'); FieldDoc[] fields=classDoc.fields(); for(FieldDoc field:fields) { buffer.append('\t').append('\t').append(field.name()).append('\n'); buffer.append('\t').append('\t').append('\t').append(field.commentText()).append('\n'); } buffer.append('\t').append("方法").append('\n'); MethodDoc[] methods=classDoc.methods(); for(MethodDoc method:methods) { buffer.append('\t').append('\t').append(method.name()).append('\n'); buffer.append('\t').append('\t').append('\t').append(method.commentText()).append('\n'); } } System.out.println(buffer); } /** 文档根节点 */ private static RootDoc root; /** * javadoc调用入口 * * @param root * @return */ public static boolean start(RootDoc root) { Doclet.root=root; return true; } }

你可能感兴趣的:([JAVA] 读取Java源文件中的注释)