直接上代码:
/**
* <p>
* 通过反射机制,循环给对象的属性赋值
* </p>
* @param object 目标对象
* @param values 源值
* @return object 赋值之后的对象 失败返回null
*/
public static Object toSetProperties(Object object, String[] values) throws Exception{
if (object == null || values == null || values.length <= 0){
Logger.info("object或者values为空!");
return null;
}
// 得到object的全部属性
Field[] fields = object.getClass().getDeclaredFields();
if(fields == null || fields.length <= 0){
Logger.info("属性个数为0!");
return null;
}
if(fields.length != values.length){
Logger.info("属性个数和值个数不同!");
return null;
}
for (int i = 0; i < fields.length; i++) {
// 得到属性名称
String attributeName = fields[i].getName();
// 属性对应的方法名,set之后第一个字母大写
String methodName = attributeName.substring(0, 1).toUpperCase() + attributeName.substring(1);
// 得到对应属性的set方法对象
Method setMethod = object.getClass().getMethod("set" + methodName, String.class);
// 执行set方法
setMethod.invoke(object, values[i]);
}
return object;
}