一,set方法
/**
* 动态调用实体的set方法
*
* @param dto 实体
* @param name 动态拼接字段
* @param value 值
* @throws Exception
*/
private void setValue(Object dto, String name, Object value) {
try {
Method[] m = dto.getClass().getMethods();
for (int i = 0; i < m.length; i++) {
if (("set" + name).toLowerCase().equals(m[i].getName().toLowerCase())) {
m[i].invoke(dto, value);
break;
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
调用实例:
for (PpdLeafDemouldPlanVO leafDemouldPlanIndex : ppdLeafDemouldPlanIndex) {
String[] menges = leafDemouldPlanIndex.getMenges().split(",");
for (int i = 0; i < menges.length; i++) {
//实体,动态拼接字段,字段值
setValue(leafDemouldPlanIndex, "day" + (i + 1), StringUtils.isBlank(menges[i]) ? "0" : menges[i]);
}
}
二,get方法
/**
* 动态调用实体的get方法(注意返回值)
*
* @param dto 实体
* @param name 动态拼接字段
* @throws Exception
*/
private static String getValue(Object dto, String name) {
try {
Method m = (Method) dto.getClass().getMethod(("get" + name));
String val = (String) m.invoke(dto);// 调用getter方法获取属性值
return val;
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return null;
}
调用实例:
for (int i = 1; i < 33; i++) {
//实体,动态字段
String value = getValue(ppdLeafDemouldPlanVO, "Day" + i);
}