Java examples for Reflection:Java Bean
get Field Value Map from a Java Bean Object
//package com.java2s; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Locale; import java.util.Map; public class Main { public static void main(String[] argv) throws Exception { Object bean = "java2s.com"; System.out.println(getFieldValueMap(bean)); }/*from w w w. j a v a 2 s . com*/ public static Map<String, String> getFieldValueMap(Object bean) { Class<?> cls = bean.getClass(); Map<String, String> valueMap = new HashMap<String, String>(); // ????bean?????? Method[] methods = cls.getDeclaredMethods(); Field[] fields = cls.getDeclaredFields(); for (Field field : fields) { try { String fieldType = field.getType().getSimpleName(); String fieldGetName = parGetName(field.getName()); if (!checkGetMet(methods, fieldGetName)) { continue; } Method fieldGetMet = cls.getMethod(fieldGetName, new Class[] {}); Object fieldVal = fieldGetMet.invoke(bean, new Object[] {}); String result = null; if ("Date".equals(fieldType)) { result = fmtDate((Date) fieldVal); } else { if (null != fieldVal) { result = String.valueOf(fieldVal); } } if (result != null && !"".equals(result) && !"page".equals(field.getName()) && !"rows".equals(field.getName())) { valueMap.put(field.getName(), result); } } catch (Exception e) { continue; } } return valueMap; } public static String parGetName(String fieldName) { if (null == fieldName || "".equals(fieldName)) { return null; } return "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); } public static boolean checkGetMet(Method[] methods, String fieldGetMet) { for (Method met : methods) { if (fieldGetMet.equals(met.getName())) { return true; } } return false; } public static String fmtDate(Date date) { if (null == date) { return null; } try { SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss", Locale.US); return sdf.format(date); } catch (Exception e) { return null; } } }