package xxxxxxx;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Map;import com.xxxxxx.datacpl.po.Lanecheckerrortypecode;/** * 將對象的屬性和值轉換為map對象 * @author admin * */public class ObjectToMapUtil { /** * 將一個類查詢方式加入map(屬性值為int型時,0時不加入, * 屬性值為String型或Long時為null和“”不加入) *註:需要轉換的必須是對象,即有屬性 */ public static Map<String, Object> setConditionMap(Object obj){ Map<String, Object> map = new HashMap<String, Object>(); if(obj==null){ return null; } Field[] fields = obj.getClass().getDeclaredFields();//擷取類的各個屬性值 for(Field field : fields){ String fieldName = field.getName();//擷取類的屬性名稱 if(getValueByFieldName(fieldName,obj)!=null)//擷取類的屬性名稱對應的值 map.put(fieldName, getValueByFieldName(fieldName,obj)); } return map; } /** * 根據屬性名稱擷取該類此屬性的值 * @param fieldName * @param object * @return */ public static Object getValueByFieldName(String fieldName,Object object){ String firstLetter=fieldName.substring(0,1).toUpperCase(); String getter = "get"+firstLetter+fieldName.substring(1); try { Method method = object.getClass().getMethod(getter, new Class[]{}); Object value = method.invoke(object, new Object[] {}); return value; } catch (Exception e) { return null; } } @SuppressWarnings("unused") public static void main(String args[]){ Lanecheckerrortypecode error = new Lanecheckerrortypecode(0, "未處理,錯誤"); Map<String, Object> map = setConditionMap(error); System.out.println(map); }}