import org.apache.commons.beanutils.PropertyUtilsBean; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.Map; /** * @author liyhu * @date 2019年08月27日 */ public class ReflectUtil { public static <T>T mapToProperties(Map<String,Object> map,Class<T> tClass) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException, InstantiationException { T t = tClass.newInstance(); PropertyUtilsBean propertyUtilsBean = new PropertyUtilsBean(); PropertyDescriptor[] descriptors = propertyUtilsBean.getPropertyDescriptors(t); for (PropertyDescriptor descriptor : descriptors) { String name = descriptor.getName(); if("class".equals(name)){ continue; } Object val = map.get(name); if(val != null){ propertyUtilsBean.setProperty(t,name,val); } } return t; } public static Map<String,Object> commonBeanToMap(Object obj) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { PropertyUtilsBean propertyUtilsBean = new PropertyUtilsBean(); PropertyDescriptor[] descriptors = propertyUtilsBean.getPropertyDescriptors(obj); Map<String,Object> resultMap=new HashMap<>(descriptors.length); for (PropertyDescriptor descriptor : descriptors) { String name = descriptor.getName(); if("class".equals(name)){ continue; } Object val = propertyUtilsBean.getNestedProperty(obj, name); if(val != null){ resultMap.put(name,val); } } return resultMap; } }