通过反射进行判断
/**
* null转为空字符串
* @param bean
* @param <T>
*/
public static <T> void nullToEmpty(T bean) {
Field[] field = bean.getClass().getDeclaredFields();
//遍历所有属性
for (int j = 0; j < field.length; j++) {
//获取属性的名字
String name = field[j].getName();
//将属性的首字符大写,方便构造get,set方法
name = name.substring(0, 1).toUpperCase() + name.substring(1);
//获取属性的类型
String type = field[j].getGenericType().toString();
ValidatorType(bean, name, type);
}
}
/**
* 验证数据类型
* @param bean
* @param name
* @param type
* @param <T>
*/
private static <T> void ValidatorType(T bean, String name, String type) {
String[] types = {"class java.lang.String", "class java.lang.Integer", "class java.lang.Double"};
int index = 2;
try {
Method mGet = bean.getClass().getMethod("get" + name);
//如果type是类类型,则前面包含"class ",后面跟类名
if (types[0].equals(type)) {
String value = (String) mGet.invoke(bean);
setParamValue(bean, name, value, "",String.class);
} else if (types[1].equals(type)) {
//调用getter方法获取属性值
Integer value = (Integer) mGet.invoke(bean);
setParamValue(bean, name, value, 0,Integer.class);
} else if (types[index].equals(type)) {
//调用getter方法获取属性值
Double value = (Double) mGet.invoke(bean);
setParamValue(bean, name, value, 0D,Double.class);
}
} catch (Exception e) {
LOGGER.error("设置属性值出错:" + e.getMessage());
}
}
/**
* 设置属性值
* @param bean
* @param name
* @param value
* @param tmp
* @param <T>
* @throws NoSuchMethodException
* @throws InvocationTargetException
* @throws IllegalAccessException
*/
private static <T> void setParamValue(T bean, String name, Object value, Object tmp,Class clazz) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
if (value == null) {
Method mSet = bean.getClass().getMethod("set" + name, clazz);
mSet.invoke(bean, tmp);
}
}
网友评论