package com.yu.killnull;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
/**
* Created with Yang Xiaolei
* Date: 2018/6/28
* Time: 14:16
*/
public class KillNullUtil {
public static Object killNull(Object object) throws Exception{
//遍历object类 成员为String类型 属性为空的全部替换为""
Field[] fields = object.getClass().getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
// 获取属性的名字
String name = fields[i].getName();
// 将属性的首字符大写,方便构造get,set方法
name = name.substring(0, 1).toUpperCase() + name.substring(1);
// 获取属性的类型
String type = fields[i].getGenericType().toString();
// 如果type是类类型,则前面包含"class ",后面跟类名
if (type.equals("class java.lang.String")) {
Method m = object.getClass().getMethod("get" + name);
// 调用getter方法获取属性值
String value = (String) m.invoke(object);
if (value == null) {
Class[] parameterTypes = new Class[1];
parameterTypes[0] = fields[i].getType();
m = object.getClass().getMethod("set" + name, parameterTypes);
String string = new String("");
Object[] objects = new Object[1];
objects[0] = string;
m.invoke(object, objects);
}
}
//将形参object类中在com.yu.killnull包下的引用一块遍历修改
if (type.contains("class com.yu.killnull")){
Method m = object.getClass().getMethod("get" + name);
// 调用getter方法获取属性值
Object value = m.invoke(object);
killNull(value);
}
}
return object;
}
}
遍历java对象中的私有属性,将null替换为“”
最新推荐文章于 2024-07-03 02:51:34 发布