利用jdk的tools.jar提供的接口,便可轻松获取java类的文档注释。

(图片来源网络,侵删)
如类、构造方法、普通方法、成员属性等,都可以获得其注释相关信息。
1.添加依赖
com.sun tools 1.8 system ${java.home}/../lib/tools.jar
2.使用示例
import cn.hutool.core.util.ReflectUtil; import com.sun.javadoc.ClassDoc; import com.sun.javadoc.FieldDoc; import com.sun.javadoc.MethodDoc; import com.sun.javadoc.RootDoc; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 获取某一个java文件代码中属性对应的注释 * */ public class Doclet { public static Logger logger = LoggerFactory.getLogger(Doclet.class); private static RootDoc rootDoc; private final string clsFilePath; // 必须要有,且必须如下定义 public static boolean start(RootDoc root) { rootDoc = root; return true; } public Doclet(String clsFilePath) { this.clsFilePath = clsFilePath; } public void exec() { com.sun.tools.javadoc.Main.execute( new String[]{"-doclet", Doclet.class.getName(), "-docletpath", Doclet.class.getResource("/").getPath(), "-encoding", "utf-8", clsFilePath}); ClassDoc[] classes = rootDoc.classes(); if (classes == null || classes.length == 0) { logger.warn(clsFilePath + " 无ClassDoc信息"); return; } ClassDoc classDoc = classes[0]; // 获取类的名称 System.err.println("类名:" + classDoc.name()); // 获取类的注释 String classComment = ReflectUtil.getFieldValue(classDoc, "documentation").toString(); System.err.println("类注释:" + classComment); // 获取属性名称和注释 for (FieldDoc field : classDoc.fields(false)) { System.err.printf("属性名:%s, 属性类型:%s, 注释:%s%n", field.name(), field.type().typeName(), field.commentText()); } for (MethodDoc method : classDoc.methods(false)) { System.err.printf("方法名:%s, 方法返回类型:%s, 注释:%s%n", method.name(), method.returnType().typeName(), method.commentText()); } } public static void main(String[] args) { Doclet doclet = new Doclet( "E:\\git\\DLMS\\dlms\\dlms-option\\dlms-option-prevent-duplicate\\src\\main\\java\\com\\gynsh\\prevent\\annotation\\PreventDuplicate.java"); doclet.exec(); } }

(图片来源网络,侵删)