public FieldVO (String fieldName, String fieldType, String describe) { this .fieldName = fieldName; this .fieldType = fieldType; this .describe = describe; public String getFieldName () { return fieldName; public void setFieldName (String fieldName) { this .fieldName = fieldName; public String getFieldType () { return fieldType; public void setFieldType (String fieldType) { this .fieldType = fieldType; public String getDescribe () { return describe; public void setDescribe (String describe) { this .describe = describe; @Override public String toString () { return "FieldVO{" + "fieldName='" + fieldName + '\'' + ", fieldType='" + fieldType + '\'' + ", describe='" + describe + '\'' + '}' ; public List<FieldVO> getFieldVOList () { return fieldVOList; public void setFieldVOList (List<FieldVO> fieldVOList) { this .fieldVOList = fieldVOList;

2.工具类

package com.example.demo;
import com.sun.javadoc.ClassDoc;
import com.sun.javadoc.FieldDoc;
import com.sun.javadoc.RootDoc;
import com.sun.tools.javadoc.Main;
import java.util.ArrayList;
import java.util.List;
 * Description:
 * @author jack
 * @date 2021/7/13 5:10 下午
public class DocUtil {
     * 会自动注入
    private static RootDoc rootDoc;
     * 会自动调用这个方法
     * @param root root
     * @return true
    public static boolean start(RootDoc root) {
        rootDoc = root;
        return true;
     * 生成文档
     * @param beanFilePath 注意这里是.java文件绝对路径
     * @return 文档注释
    public static DocVO execute(String beanFilePath) {
        Main.execute(new String[]{"-doclet", DocUtil.class.getName(), "-docletpath",
                DocUtil.class.getResource("/").getPath(), "-encoding", "utf-8", beanFilePath});
        ClassDoc[] classes = rootDoc.classes();
        if (classes == null || classes.length == 0) {
            return null;
        ClassDoc classDoc = classes[0];
        // 获取属性名称和注释
        FieldDoc[] fields = classDoc.fields(false);
        List<DocVO.FieldVO> fieldVOList = new ArrayList<>(fields.length);
        for (FieldDoc field : fields) {
            fieldVOList.add(new DocVO.FieldVO(field.name(), field.type().typeName(), field.commentText()));
        return new DocVO(fieldVOList);
package com.example.demo;
import java.util.Objects;
 * Description:
 * @author jack
 * @date 2021/7/13 4:11 下午
public class ClassTest {
    public static void main(String[] args) {
        String beanFilePath = "/Documents/demo/src/main/java/com/example/demo/dto/MailDTO.java";
        DocVO docVO = DocUtil.execute(beanFilePath);
        if (Objects.nonNull(docVO) && Objects.nonNull(docVO.getFieldVOList())){
            docVO.getFieldVOList().forEach(System.out::println);