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

最近做项目,需要利用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>



  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值