java实现map和object互转的三种方法(未测试)

来源:互联网 发布:java树形结构简单 编辑:程序博客网 时间:2024/05/22 03:13
/**  * 使用org.apache.commons.beanutils进行转换  */  class A {            public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {            if (map == null)              return null;            Object obj = beanClass.newInstance();            org.apache.commons.beanutils.BeanUtils.populate(obj, map);            return obj;      }              public static Map<?, ?> objectToMap(Object obj) {          if(obj == null)              return null;             return new org.apache.commons.beanutils.BeanMap(obj);      }          }    /**  * 使用Introspector进行转换  */  class B {        public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {            if (map == null)               return null;              Object obj = beanClass.newInstance();            BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();            for (PropertyDescriptor property : propertyDescriptors) {              Method setter = property.getWriteMethod();                if (setter != null) {                  setter.invoke(obj, map.get(property.getName()));               }          }            return obj;      }              public static Map<String, Object> objectToMap(Object obj) throws Exception {            if(obj == null)              return null;                Map<String, Object> map = new HashMap<String, Object>();             BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();            for (PropertyDescriptor property : propertyDescriptors) {                String key = property.getName();                if (key.compareToIgnoreCase("class") == 0) {                   continue;              }              Method getter = property.getReadMethod();              Object value = getter!=null ? getter.invoke(obj) : null;              map.put(key, value);          }              return map;      }          }    /**  * 使用reflect进行转换  */  class C {        public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {            if (map == null)              return null;              Object obj = beanClass.newInstance();            Field[] fields = obj.getClass().getDeclaredFields();           for (Field field : fields) {                int mod = field.getModifiers();                if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){                    continue;                }                  field.setAccessible(true);                field.set(obj, map.get(field.getName()));           }             return obj;        }          public static Map<String, Object> objectToMap(Object obj) throws Exception {            if(obj == null){                return null;            }             Map<String, Object> map = new HashMap<String, Object>();              Field[] declaredFields = obj.getClass().getDeclaredFields();            for (Field field : declaredFields) {                field.setAccessible(true);              map.put(field.getName(), field.get(obj));          }              return map;      }   }  
0 0
原创粉丝点击