1. 程式人生 > >java利用反射機制獲取實體類屬性自定義註解說明

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>