利用Java反射快速封装JavaBean属性
利用Java反射快速封装JavaBean属性
1、web开发中,对于页面提交的属性封装到对象属性中着实是件麻烦事,自己写多了也想偷点懒,参照网上其他的一些文章,封装了一个简单的方法,贴上代码
[java]
- /**
- * 对象快速封装的方法
- *
- * @param object 需要进行属性封装的对象
- * @param fields 需要进行封装的属性
- * @param params 需要进行设置的值
- */
- public static void encapsulateObject(Object object, String[] fields,
- Object[] params) {
- Class<?> cl = object.getClass();
- for (int i = 0; i < fields.length; i++) {
- StringBuffer buffer = new StringBuffer();
- try {
- Field field = cl.getDeclaredField(fields[i]);
- // 得到参数类型
- Class<?> paramType = field.getType();
- buffer.append("set");
- buffer.append(fields[i].substring(0, 1).toUpperCase());
- buffer.append(fields[i].substring(1));
- Method method = cl.getDeclaredMethod(buffer.toString(),
- paramType);
- method.invoke(object, params[i]);
- } catch (SecurityException e) {
- e.printStackTrace();
- } catch (NoSuchFieldException e) {
- e.printStackTrace();
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- } catch (IllegalArgumentException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- }
- }
- }
[java]
- public static void main(String[] args) {
- Admin admin = new Admin();
- String[] method = { "userName", "realName", "lastLoginTime" };
- Object[] param = { "dfd", "zhangsan",
- new Timestamp(new Date().getTime()) };
- encapsulateObject(admin, method, param);
- System.out.println(admin);
- }
[java]
- Admin [userName=dfd, realName=zhangsan, password=null, unit=null, lastLoginTime=2011-10-11 13:15:05.593, isdel=0, roles=[]]
评论暂时关闭