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);