package week2.struts2; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ReflectionUtil { /** * 反射赋值 * @param o:类对象 * @param params:用户信息 */ public static void setParameters(Object o, Map<String,String> params){ List<Method> Methods=getSetterMethods(o.getClass()); for(String name:params.keySet()){ String methodName="set"+name; for(Method method:Methods){ if(method.getName().equalsIgnoreCase(methodName)){ try { method.invoke(o, params.get(name)); } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { e.printStackTrace(); } } } } } public static Map<String,Object> getParamterMap(Object o){ Map<String,Object> params=new HashMap<>(); List<Method> methods=getGetterMethods(o.getClass()); for(Method method:methods){ String name=method.getName().replaceFirst("get", "").toLowerCase(); try { Object object=method.invoke(o); params.put(name, object); } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { e.printStackTrace(); } } return params; } public static List<Method> getSetterMethods(Class<?> clazz){ return getMethod(clazz,"set"); } public static List<Method> getGetterMethods(Class<?> clazz){ return getMethod(clazz,"get"); } /** *反射获取给定名开始的方法 * @param clazz * @param startWithName * @return */ private static List<Method> getMethod(Class<?> clazz, String startWithName) { List<Method> methods=new ArrayList<Method>(); for(Method method:clazz.getDeclaredMethods()){ if(method.getName().startsWith(startWithName)){ methods.add(method); } } return methods; } }