最近做项目,需要利用java反射机制,获取实体类自定义注解的说明信息
1.自定义注解
<strong>package com.bjhy.platform.criminal.search.core.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/** * @Description 用于配置实体类字段说明信息 * @author wangbowen * @date 2015年12月14日 */@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface ColumnConfig { /** * 字段的中文名 * @return */ String description() default "";}</strong>
2.解析自定义注解的工具类
<strong>package com.bjhy.platform.criminal.search.core.tool;import java.lang.reflect.Field;import java.util.ArrayList;import java.util.LinkedHashMap;import java.util.List;import com.bjhy.platform.criminal.search.core.annotation.ColumnConfig;/*** * 获取属性与对应的中文名工具类 * @author wangbowen * @date 2015-12-14 * @version 1.0 * */public class FieldHelper { /** * 根据实体类名获取字段名称和中文名称 * @param entityName 实体类名 * @return List<Map<String,Object>> */ public static List<LinkedHashMap<String,Object>> initAnnoFieldDic(@SuppressWarnings("rawtypes") Class clzz){ //用于存储字段和中文值的集合 List<LinkedHashMap<String,Object>> fieldList = new ArrayList<>(); //用于存储实体类字段(key)和中文名(value) LinkedHashMap<String,Object> valueMap = new LinkedHashMap<>(); //获取对象中所有的Field Field[] fields = clzz.getDeclaredFields(); //循环实体类字段集合,获取标注@ColumnConfig的字段 for (Field field : fields) { if(field.isAnnotationPresent(ColumnConfig.class)){ //获取字段名 String fieldNames = clzz.getSimpleName()+"."+field.getName(); //获取字段注解 ColumnConfig columnConfig = field.getAnnotation(ColumnConfig.class); //判断是否已经获取过该code的字典数据 避免重复获取 if(valueMap.get(columnConfig.description())==null){ valueMap.put(fieldNames, columnConfig.description()); } } } fieldList.add(valueMap);//将LinkedHashMap放入List集合中 return fieldList; } }</strong>
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow