java利用反射机制获取实体类属性自定义注解说明

梦里梦外; 2022-08-20 02:30 363阅读 0赞

最近做项目,需要利用java反射机制,获取实体类自定义注解的说明信息

1.自定义注解

  1. <strong>package com.bjhy.platform.criminal.search.core.annotation;
  2. import java.lang.annotation.ElementType;
  3. import java.lang.annotation.Retention;
  4. import java.lang.annotation.RetentionPolicy;
  5. import java.lang.annotation.Target;
  6. /**
  7. * @Description 用于配置实体类字段说明信息
  8. * @author wangbowen
  9. * @date 2015年12月14日
  10. */
  11. @Target(ElementType.FIELD)
  12. @Retention(RetentionPolicy.RUNTIME)
  13. public @interface ColumnConfig {
  14. /**
  15. * 字段的中文名
  16. * @return
  17. */
  18. String description() default "";
  19. }
  20. </strong>

2.解析自定义注解的工具类

  1. <strong>package com.bjhy.platform.criminal.search.core.tool;
  2. import java.lang.reflect.Field;
  3. import java.util.ArrayList;
  4. import java.util.LinkedHashMap;
  5. import java.util.List;
  6. import com.bjhy.platform.criminal.search.core.annotation.ColumnConfig;
  7. /***
  8. * 获取属性与对应的中文名工具类
  9. * @author wangbowen
  10. * @date 2015-12-14
  11. * @version 1.0
  12. *
  13. */
  14. public class FieldHelper {
  15. /**
  16. * 根据实体类名获取字段名称和中文名称
  17. * @param entityName 实体类名
  18. * @return List<Map<String,Object>>
  19. */
  20. public static List<LinkedHashMap<String,Object>> initAnnoFieldDic(@SuppressWarnings("rawtypes") Class clzz){
  21. //用于存储字段和中文值的集合
  22. List<LinkedHashMap<String,Object>> fieldList = new ArrayList<>();
  23. //用于存储实体类字段(key)和中文名(value)
  24. LinkedHashMap<String,Object> valueMap = new LinkedHashMap<>();
  25. //获取对象中所有的Field
  26. Field[] fields = clzz.getDeclaredFields();
  27. //循环实体类字段集合,获取标注@ColumnConfig的字段
  28. for (Field field : fields) {
  29. if(field.isAnnotationPresent(ColumnConfig.class)){
  30. //获取字段名
  31. String fieldNames = clzz.getSimpleName()+"."+field.getName();
  32. //获取字段注解
  33. ColumnConfig columnConfig = field.getAnnotation(ColumnConfig.class);
  34. //判断是否已经获取过该code的字典数据 避免重复获取
  35. if(valueMap.get(columnConfig.description())==null){
  36. valueMap.put(fieldNames, columnConfig.description());
  37. }
  38. }
  39. }
  40. fieldList.add(valueMap);//将LinkedHashMap放入List集合中
  41. return fieldList;
  42. }
  43. }
  44. </strong>

发表评论

表情:
评论列表 (有 0 条评论,363人围观)

还没有评论,来说两句吧...

相关阅读