java反射对实体类取值和赋值

Onida ·
更新时间:2024-11-13
· 560 次阅读

  项目中需要过滤前面表单页面中传过来的实体类的中的String类型变量的前后空格过滤,由于前几天看过一个磨砺营的java反射讲解,非常受益。于是,哈哈哈   public static <T> void modelTrim(T model){   Class<T> clazz = (Class<T>) model.getClass();   //获取所有的bean中所有的成员变量   Field[] fields = clazz.getDeclaredFields();   for(int j=0;j<fields.length;j++){   //获取所有的bean中变量类型为String的变量   if("String".equals(fields[j].getType().getSimpleName())){   try {   //获取get方法名   String methodName = "get"+fields[j].getName().substring(0, 1).toUpperCase()   +fields[j].getName().replaceFirst("\w", "");   Method getMethod = clazz.getDeclaredMethod(methodName);   //打破封装   getMethod.setAccessible(true);   //得到该方法的值   Object methodValue = getMethod.invoke(model);   //判断值是否为空或者为null,非的话这过滤前后空格   if(methodValue != null && !"".equals(methodValue)){   //获取set方法名   String setMethodName = "set"+fields[j].getName().substring(0, 1).toUpperCase()   +fields[j].getName().replaceFirst("\w", "");   //得到get方法的Method对象,带参数   Method setMethod = clazz.getDeclaredMethod(setMethodName,fields[j].getType());   setMethod.setAccessible(true);   //赋值   setMethod.invoke(model, (Object)String.valueOf(methodValue).trim());   }   } catch (NoSuchMethodException e) {   e.printStackTrace();   } catch (SecurityException e) {   e.printStackTrace();   } catch (IllegalAccessException e) {   e.printStackTrace();   } catch (IllegalArgumentException e) {   e.printStackTrace();   } catch (InvocationTargetException e) {   e.printStackTrace();   }   }   }   }



JAVA 实体 实体类 赋值

需要 登录 后方可回复, 如果你还没有账号请 注册新账号