通过反射将对象所有属性(含属性为集合类型中的所有属性)中字符串类型做trim()处理
public class FieldUtils { /** * 字符串 字符 去除 首位空格 * * @param model * @throws Exception */ public static void removeSpace(Object model) throws Exception { Class clazz = model.getClass(); Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { if (!field.isAccessible()) { field.setAccessible(true); } //如果为字符串类型 if (field.getGenericType().toString().equals("class java.lang.String")) { Method getMethod = clazz.getMethod("get" + getMethodName(field.getName())); String value = (String) getMethod.invoke(model);// 调用getter方法获取属性值 if (StringUtils.isNotBlank(value)) { value = value.trim(); field.setAccessible(true); field.set(model, value); } } //如果为集合类型 if (List.class.isAssignableFrom(field.getType())) { Type t = field.getGenericType(); if (t instanceof ParameterizedType) { Object object = field.get(model); if (ObjectUtil.isEmpty(object)) { continue; } Class clazz1 = object.getClass();//获取到属性的值的Class对象 Method m = clazz1.getDeclaredMethod("size"); int size = (Integer) m.invoke(field.get(model));//调用list的size方法,得到list的长度 for (int i = 0; i < size; i++) {//遍历list,调用get方法,获取list中的对象实例 Method getM = clazz1.getDeclaredMethod("get", int.class); if (!getM.isAccessible()) { getM.setAccessible(true); } removeSpace(getM.invoke(field.get(model), i)); } } } } } /** * 返回首字母大写 * * @param fildeName * @return * @throws Exception */ private static String getMethodName(String fildeName) throws Exception { byte[] items = fildeName.getBytes(); items[0] = (byte) ((char) items[0] - 'a' + 'A'); return new String(items); } }