因为需要为某个参数赋默认值但是又要保证接口的灵活调用,所以对部分参数都需要进行空值检查 不为空则赋初值
if (param.getParam().getOrgPath() == null ||
param.getParam().getOrgPath().equals("")) {
param.getParam().setOrgPath(find.get().getInnerCode())
后来发现写了太多这样的代码了 于是重构
/**
* 设置参数 如果param的某个filedName为空 则讲setFiled设置到filedName中
*
* @param param
* 需要被设置参数的对象
* @param filedName
* 需要被设置的参数名
* @param setFiled
* 需要被设置的参数
*/
private void setParam(Object param, String filedName, Object setFiled) throws NoSuchMethodException,
SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
String getMethodName = "get" + filedName.substring(0, 1).toUpperCase()
+ filedName.substring(1, filedName.length());
String setMethodName = "set" + filedName.substring(0, 1).toUpperCase()
+ filedName.substring(1, filedName.length());
Class<?> clazz = param.getClass();
Method getMethod = clazz.getMethod(getMethodName, null);
Method setMethod = clazz.getMethod(setMethodName, setFiled.getClass());
Object obj = getMethod.invoke(param, null);
if (obj == null || StringUtils.isEmpty(obj.toString())) {
setMethod.invoke(param, setFiled);
}
}
这样的话我就只用写一句了
setParam(param.getParam(), "orgPath", find.get().getInnerCode());