反射 根据属性名获得属性set方法并为set方法赋值

/**
*
* @param key 属性名
* @param value 属性值
* @param o 要封装的对象
*/
public static void setObject(String key, String value, Object o) {
//key=key.replaceAll("\s*", "").replaceAll("_", "").toLowerCase();
key=UtilString.newString(key);//将A_B_C D 转换为abcd 将excel中的列名,变为对象中的属性名
log.info("=====================log.UtilEncapsulated.setObject.start===============key:"+key);
java.lang.reflect.Field field=null;
try {
//通过属性名得到对应的set方法
field = o.getClass().getDeclaredField(key);
//属性为private属性设置为true
field.setAccessible(true);
//为该set方法赋值(参数为对象,属性值)
field.set(o, value != null ? value.toString().trim():"");
} catch (NoSuchFieldException | SecurityException |IllegalArgumentException |IllegalAccessException e) {
log.error("log.UtilEncapsulated"+".UtilEncapsulated.exception.........反射封装对象时失败,请检查excel的列名在javabean中属性是否存在"+e);
throw new DataBaseAccessException(Constants.SERVICE_FILE_UPLOAD_CODE+" "+Constants.OB_EXCELTODB_ERROR+e);//5001 excel文件存入数据库失败
}
log.info("=====================log.UtilEncapsulated.setObject.end===============");
}

原文地址:https://www.cnblogs.com/songyunxinQQ529616136/p/6632721.html