c语言sscanf函数的用法是什么
301
2022-12-27
Java如何获取属性的注释信息详解
前言
注解是javaSE5.0开始提供的一项新特性,利用此特性可以通过特定的注解标签为程序提供一些描述性信息。这些描述性信息可以在编译或运行时为编译器、运行环境提供附加的信息,从而简化开发。本文将详细介绍Java获取属性注释信息的相关内容,下面来一起看看详细的实现代码
实例代码
1.数据模型
package com.example.demo;
import java.util.List;
/**
* Description:
*
* @author jack
* @date 2021/7/13 5:15 下午
*/
public class DocVO {
private List
public DocVO(List
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
return fieldVOList;
}
public void setFieldVOList(List
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
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;
/**
* 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);
}
}
}
总结
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~