1、web开发中,对于页面提交的属性封装到对象属性中着实是件麻烦事,自己写多了也想偷点懒,参照网上其他的一些文章,封装了一个简单的方法,贴上代码
/**
* 对象快速封装的方法
*
* @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();
}
}
}
使用一下:
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);
}
复写toString(),看一下结果:
Admin [userName=dfd, realName=zhangsan, password=null, unit=null, lastLoginTime=2011-10-11 13:15:05.593, isdel=0, roles=[]]