JavaBean 和 Map 之间互相转换

来源:互联网 发布:淘宝开店充话费流程 编辑:程序博客网 时间:2024/05/04 10:15
import java.beans.BeanInfo;import java.beans.IntrospectionException;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Map;/** * JavaBean and map converter. *  *  */public final class BeanMapUtils { /** * Converts a map to a JavaBean. *  * @param type type to convert * @param map map to convert * @return JavaBean converted * @throws IntrospectionException failed to get class fields * @throws IllegalAccessException failed to instant JavaBean * @throws InstantiationException failed to instant JavaBean * @throws InvocationTargetException failed to call setters */public static final Object toBean(Class<?> type, Map<String, ? extends Object> map) throws IntrospectionException, IllegalAccessException,InstantiationException, InvocationTargetException {BeanInfo beanInfo = Introspector.getBeanInfo(type);Object obj = type.newInstance();PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();for (int i = 0; i< propertyDescriptors.length; i++) {PropertyDescriptor descriptor = propertyDescriptors[i];String propertyName = descriptor.getName();if (map.containsKey(propertyName)) {Object value = map.get(propertyName);Object[] args = new Object[1];args[0] = value;descriptor.getWriteMethod().invoke(obj, args);}}return obj;}/** * Converts a JavaBean to a map *  * @param bean JavaBean to convert * @return map converted * @throws IntrospectionException failed to get class fields * @throws IllegalAccessException failed to instant JavaBean * @throws InvocationTargetException failed to call setters */public static final Map<String, Object> toMap(Object bean)throws IntrospectionException, IllegalAccessException, InvocationTargetException {Map<String, Object> returnMap = new HashMap<String, Object>();BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass());PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();for (int i = 0; i< propertyDescriptors.length; i++) {PropertyDescriptor descriptor = propertyDescriptors[i];String propertyName = descriptor.getName();if (!propertyName.equals("class")) {Method readMethod = descriptor.getReadMethod();Object result = readMethod.invoke(bean, new Object[0]);if (result != null) {returnMap.put(propertyName, result);} else {returnMap.put(propertyName, "");}}}return returnMap;}<span style="white-space:pre">public</span> static final Map<String, String> toStringMap(Object bean) {<span style="white-space:pre">if (bean == null) {return null;<span style="white-space:pre"></span><span style="white-space:pre"></span></span>}<span style="white-space:pre">Map<String, String> returnMap = new HashMap<String, String>();</span><span style="white-space:pre">BeanInfo beanInfo;<span style="white-space:pre"></span>try {</span>}
     
1 1
原创粉丝点击