java中我们常常需要判断需要砍断对象是否为空,由于我们在创建对象的时候一般会实现序列化,并且在new对象的时候无法判断对象中所有值都是否为空,因此我们需要使用反射来实现判断每个值是否为空。
具体实现如下:
@SuppressWarnings("rawtypes")
public static boolean isAllFieldNull(Object obj) throws Exception{
Class stuCla = (Class) obj.getClass();// 得到类对象
Field[] fs = stuCla.getDeclaredFields();//得到属性集合
boolean flag = true;
//遍历属性
for (Field f : fs) {
f.setAccessible(true); // 设置属性是可以访问的(私有的也可以)
if (f.getName().equals("serialVersionUID")) {//将序列化的值跳过
continue ;
}
Object val = f.get(obj);// 得到此属性的值
if(val!=null) {//只要有1个属性不为空,那么就不是所有的属性值都为空
flag = false;
break;
}
}
return flag;
}