1.数据模型
package com.example.demo;
import java.util.List;
public class DocVO {
private List<FieldVO> fieldVOList;
public DocVO(List<FieldVO> fieldVOList) {
this.fieldVOList = fieldVOList;
}
public static class FieldVO {
private String fieldName;
private String fieldType;
private String describe;
public FieldVO() {
}
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;
public class DocUtil {
private static RootDoc rootDoc;
public static boolean start(RootDoc root) {
rootDoc = root;
return true;
}
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);
}
}
复制代码
3.测试
package com.example.demo;
import java.util.Objects;
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);
}
}
}
复制代码
近期评论